Andriod design 是Andriod 開發人員依照最新Andriod 4.0(Ice cream sandwich)所撰寫的介紹網頁。
網頁中介紹了4.0最新的功能及介面。
在網頁最左邊主要分為GET STARTED(開始),STYLE(風格),PATTERNS(樣式),BUILDING BLOCK(組成構件)
這邊做個簡單的介紹:
GET STARTED 主要是講4.0的UI和設計原則-Design Principles
STYLE是指不同|devices有不同的display,並還有不同的theme、color等等多種不同設定的風格。
PATTERNS指Andriod 4.0 新的設計與樣式像Navigation bar、Action bar或Multi-pane layouts等等。
BUILDING BLOCK,基本像是button、list、tab一些顯示、操作上的介紹。
至於詳細的還請到http://developer.android.com/design/index.html去看看。
參考
1.http://developer.android.com/index.html
2.http://developer.android.com/design/index.html
科技
2012年1月31日 星期二
2012年1月30日 星期一
[MFC]socket 運用
這個範例碼主要是在本機建立一個server ,使用者透過socket傳送資訊給server
server再傳回使用者所需資訊
SOCKET InitSocket(void)
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
if (INVALID_SOCKET != sock)
{
SOCKADDR_IN sockAddr;
sockAddr.sin_family =AF_INET;
sockAddr.sin_port = htons(2000);
/*INADDR_LOOPBACK (127.0.0.1) 本地主機
INADDR_ANY (0.0.0.0) 任何可綁定位置
INADDR_BROADCAST (255.255.255.255) 任何主機 選INADDR_ANY是因為在 SOCKET連接時
萬一預設端口已經連線會自動找尋本機上的任何閒置端口*/
sockAddr.sin_addr.S_un.S_addr = INADDR_ANY;
if ( SOCKET_ERROR == bind(sock, (sockaddr FAR*)&sockAddr,sizeof(sockAddr)))
{
AfxMessageBox("Init Socket bind fail");
closesocket( sock );
return false;
}
if ( SOCKET_ERROR == listen(sock, SOMAXCONN))
{
AfxMessageBox("Init Socket bind fail");
closesocket( sock );
return false;
}
}
return sock;
}
void Server_Recv(LPVOID pParam)
{
char tsData[MAX_PATH]={NULL};
//建立socket
SOCKET sock = (SOCKET)pParam;
SOCKET Clientfd = accept(sock,0,0); //將accept這動作命名為Clientfd
fd_set fdRead = { 0 };
if ( !FD_ISSET( Clientfd, &fdRead ) )
FD_SET( Clientfd, &fdRead );
int res = select( Clientfd, &fdRead, NULL, NULL, NULL );
if ( res > 0)
{
res=recv( Clientfd, tsData, sizeof(tsData), 0);
//tsData為使用者send出的字串 在這邊做比對 用以確認是否要send回 MESSAGE
if(strncmp(tsData,"GetHiddenAreaString",19)==0)
{
//send回的字串長度為hiddenstring長度
send( Clientfd,hiddenstring, strlen(hiddenstring), 0);
}
}
}
2012年1月20日 星期五
[MFC]CString 轉換到 char
最近在做MFC相關的東西
遇到CString to char真的很麻煩
方法1
size_t i;
char str[STR_LEN];
// STR_LEN 大小自己決定, 其實可以改宣告為 char*, 然後在下面取得 cStr 長度之後再 allocate 相對應的大小
int sizeOfString = (cStr.GetLength() + 1); // 取得 cStr 長度, +1 for '\0'.
// LPTSTR 型態是 wchar_t*, 一個 element 2 bytes 大小.
LPTSTR pStrTmp = new TCHAR[sizeOfString];
_tcscpy_s(pStrTmp, sizeOfString, cStr); // 用 _tcscpy_s 複製 cStr
// str 型態是 char, 一個 element 1 byte 大小, 用 wcstombs_s 轉換 pStrTmp.
wcstombs_s(&i, str, 16, pStrTmp, 16);
方法1 筆者在使用時發生trace 不到 wcstombs_s來源 筆者的編輯環境為VS2005
因此將 wcstombs_s 轉用 wcstombs
改寫為 wcstombs
其中內容: wcstombs(char *mbstr, const wchar_t *wcstr, size_t count);
mbstr 為CString轉換後欲存放的char變數,方法1中的str
wcstr為方法1中的pStrTmp
size_t count 轉換的size
這樣就可以順利轉換了
方法2 其實也算是將方法1改寫 改成以function來表達 程式碼如下
char* CRadiotestDlg::CStringToChar(CString cStr)
{
char str[40];
int sizeOfString = (cStr.GetLength() + 1);
LPTSTR pStrTmp = new TCHAR[sizeOfString];
_tcscpy_s(pStrTmp, sizeOfString, cStr);
wcstombs(str, pStrTmp,sizeOfString);
return str;
}
改寫成function好處是可重複利用 較為便利
2012年1月19日 星期四
M3U介紹與製作
M3U是一種播放清單的格式,它是Winamp 播放器所採用的播放清單。
相對於,平常我們用的Windows系統裡面的Windows media player,它是採用wpl。
(wpl也是一種播放清單的格式!)
M3U製作教學
1-在電腦上,開啟一個簡易文字檔以進行編輯。
2-在各個文字行中輸入您想要新增至播放清單的所有音樂檔名稱。
注意
*您列在檔案中的名稱應該與您透過電腦檔案系統檢視儲存卡上的內容時所出現的名稱相同,而不是與您手機歌曲清單中出現的名稱相同。
*您的手機會縮短檔案名稱,而且也不會包含曲目編號或副檔名 (例如:.mp3)。
3-使用 .m3u 作為副檔名,儲存播放清單 (例如:MyMusic.m3u)。
4-將播放清單儲存到儲存卡上的 Music 資料夾中。
P.S.wpl 用Windows media player "建立播放清單"的功能就可以產生了。
相對於,平常我們用的Windows系統裡面的Windows media player,它是採用wpl。
(wpl也是一種播放清單的格式!)
M3U製作教學
1-在電腦上,開啟一個簡易文字檔以進行編輯。
2-在各個文字行中輸入您想要新增至播放清單的所有音樂檔名稱。
注意
*您列在檔案中的名稱應該與您透過電腦檔案系統檢視儲存卡上的內容時所出現的名稱相同,而不是與您手機歌曲清單中出現的名稱相同。
*您的手機會縮短檔案名稱,而且也不會包含曲目編號或副檔名 (例如:.mp3)。
3-使用 .m3u 作為副檔名,儲存播放清單 (例如:MyMusic.m3u)。
4-將播放清單儲存到儲存卡上的 Music 資料夾中。
P.S.wpl 用Windows media player "建立播放清單"的功能就可以產生了。
2012年1月16日 星期一
USB_OTG技術簡介
OTG是On The Go的縮寫,在越來越多的USB裝置出現後,漸漸有部分裝置想要脫離電腦的管束互相連結,但是USB舊有的架構限制了USB裝置間連結的可能性。所以當兩個USB裝置碰在一起,沒有任何一端可以做主。對此,USB協會又推出了USB OTG的規範來彌補這樣子的缺陷。
USB OTG並不是一個獨立於USB 2.0存在的規範,所有在USB OTG中未提到的事項都必須以USB 2.0的規範為準。因此USB OTG存在的目的僅在於提供一個方式,讓兩個USB裝置得以連結。USB OTG 1.0中提到一個具備雙重角色裝置(Dual-role device)的概念。就是說一個OTG的裝置,可以當主機,也可以當設備端。如此一來,當兩個OTG裝置遇上的時候,就可以由其中一方當作主機,另一方當作設備端。就可以完全符合USB對兩個裝置相連的需求了。
USB OTG並不是一個獨立於USB 2.0存在的規範,所有在USB OTG中未提到的事項都必須以USB 2.0的規範為準。因此USB OTG存在的目的僅在於提供一個方式,讓兩個USB裝置得以連結。USB OTG 1.0中提到一個具備雙重角色裝置(Dual-role device)的概念。就是說一個OTG的裝置,可以當主機,也可以當設備端。如此一來,當兩個OTG裝置遇上的時候,就可以由其中一方當作主機,另一方當作設備端。就可以完全符合USB對兩個裝置相連的需求了。
訂閱:
文章 (Atom)
