2017年8月23日 星期三

0823 cocos2d-x 手機連線 相關資料

http://qiankanglai.me/2014/12/02/cocos2dx-assetsmanager/
基於cocos2d-x 3.x版本修改的Assets Manager,加幾行代碼就能實現斷線續傳功能…so easy



bool AssetsManager::downLoad()
{
// Create a file to save package.
const string outFileName = _storagePath + TEMP_PACKAGE_FILE_NAME;
- FILE *fp = fopen(outFileName.c_str(), "wb");
+ ssize_t outFileLength = 0;
+ FILE *fp = fopen(outFileName.c_str(), "rb");
+ if(fp)
+ {
+ fseek(fp, 0, SEEK_END);
+ outFileLength = ftell(fp);
+ fclose(fp);
+ }
+
+ fp = fopen(outFileName.c_str(), "ab");

然後在下面設置curl的地方




curl_easy_setopt(_curl, CURLOPT_FOLLOWLOCATION, 1 );
+ if(outFileLength > 0)
+ curl_easy_setopt(_curl, CURLOPT_RESUME_FROM, outFileLength);
res = curl_easy_perform(_curl);

Android – 判斷手機是否連上網路 (ConnectivityManager)

通常手機在開發網路的應用程式時, 常會定時的去取資料回來 但…倘若目前手機無法對外連線, 則這段動作就會造成手機效能無謂的耗損、與電力的浪費 所以在開發網路型的應用程式時, 首先要做的第一個功課, 便是 「判斷手機目前是否已連線"
而 Android 系統的手機, 目前是否連上網路? 以什麼方式連上網路? (WIFI / 3G…)? 目前網路是否故障中(Failover)? 目前手機是否在漫遊中(Roaming)? 這些相關的資訊, 都存在於 ConnectivityManager 這個類別當中 而使用的方式只需要去向系統取回這個服務即可
1
2
ConnectivityManager CM = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = CM.getActiveNetworkInfo();
而當中要注意到的地方, 是在 NetworkInfo 這段, 倘若你的手機目前不在網路的服務範圍, 也就是說沒有任何方式可以連出去網路 則 CM.getActiveNetworkInfo() 取回的 Reference 會是 Null, 忘了做此判斷的話, 手機則會立刻罷工給你看 (NullPointerException) 而比較常見需要取得的資料如下:
1
2
3
4
5
6
7
info.getTypeName();     // 目前以何種方式連線 [WIFI]
info.getState();        // 目前連線狀態 [CONNECTED]
info.isAvailable();     // 目前網路是否可使用 [true]
info.isConnected();     // 網路是否已連接 [true]
info.isConnectedOrConnecting(); // 網路是否已連接 或 連線中 [true]
info.isFailover();      // 網路目前是否有問題 [false]
info.isRoaming();       // 網路目前是否在漫遊中 [false]
除此之外, 也必需替應用程式設定權限, 不然手機一樣會罷工給你看 (SecurityException) 設定權限的方式則是在 AndroidManifest.xml 裡頭新增底下的權限
1
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

沒有留言:

張貼留言

cocos2dx-lua 建立滑鼠監聽

重要關鍵字  EVENT_MOUSE_SCROLL addEventListenerWithSceneGraphPriority      if IsPc() then --建立滑鼠監聽         local listener = cc.EventListenerMouse...