日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用Nordic芯片的手环OTA(android)

發(fā)布時(shí)間:2024/3/13 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Nordic芯片的手环OTA(android) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用Nordic芯片的手環(huán)OTA(android)

我司現(xiàn)在的手環(huán)全部切換到使用nordic方案了,現(xiàn)參照官網(wǎng)上的demo整理一下其固件升級(jí)步驟如下
  • 第一步:添加依賴

    compile ‘no.nordicsemi.android:dfu:1.0.4’

  • 第二步:繼承DfuBaseService(不要忘記在清單文件中注冊(cè))

public class DfuService extends DfuBaseService {@Overrideprotected Class<? extends Activity> getNotificationTarget() {return null;} }
  • 第三步:在升級(jí)activity中添加如下代碼
@Overrideprotected void onResume() {super.onResume();DfuServiceListenerHelper.registerProgressListener(this, mDfuProgressListener);}@Overrideprotected void onPause() {super.onPause();DfuServiceListenerHelper.unregisterProgressListener(this, mDfuProgressListener);}private final DfuProgressListener mDfuProgressListener = new DfuProgressListener() {@Overridepublic void onDeviceConnecting(String deviceAddress) {Log.e("dfu", "onDeviceConnecting");}@Overridepublic void onDeviceConnected(String deviceAddress) {Log.e("dfu", "onDeviceConnected");}@Overridepublic void onDfuProcessStarting(String deviceAddress) {Log.e("dfu", "onDfuProcessStarting");showProgressDialog();}@Overridepublic void onDfuProcessStarted(String deviceAddress) {Log.e("dfu", "onDfuProcessStarted");}@Overridepublic void onEnablingDfuMode(String deviceAddress) {Log.e("dfu", "onEnablingDfuMode");}@Overridepublic void onProgressChanged(String deviceAddress, int percent, float speed, float avgSpeed, int currentPart, int partsTotal) {Log.e("dfu", "onProgressChanged" + percent);progressDialog.setProgress(percent);}@Overridepublic void onFirmwareValidating(String deviceAddress) {Log.e("dfu", "onFirmwareValidating");}@Overridepublic void onDeviceDisconnecting(String deviceAddress) {Log.e("dfu", "onDeviceDisconnecting");}@Overridepublic void onDeviceDisconnected(String deviceAddress) {Log.e("dfu", "onDeviceDisconnected");}@Overridepublic void onDfuCompleted(String deviceAddress) {Log.e("dfu", "onDfuCompleted");stopDfu();progressDialog.dismiss();Toast.makeText(mContext, "升級(jí)成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onDfuAborted(String deviceAddress) {Log.e("dfu", "onDfuAborted");progressDialog.dismiss();Toast.makeText(mContext, "升級(jí)失敗,請(qǐng)重新點(diǎn)擊升級(jí)。", Toast.LENGTH_SHORT).show();}@Overridepublic void onError(String deviceAddress, int error, int errorType, String message) {Log.e("dfu", "onError");stopDfu();progressDialog.dismiss();Toast.makeText(mContext, "升級(jí)失敗,請(qǐng)重新點(diǎn)擊升級(jí)。", Toast.LENGTH_SHORT).show();}};private void stopDfu() {Intent intent = new Intent(this, DfuService.class);stopService(intent);}private void showProgressDialog() {progressDialog = new ProgressDialog(this);progressDialog.setTitle("正在升級(jí)");progressDialog.setMessage("請(qǐng)稍等。。。");progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setMax(100);progressDialog.setCancelable(false);progressDialog.show();}
  • 第四步:手機(jī)向手環(huán)發(fā)送進(jìn)入OTA狀態(tài)的命令,成功進(jìn)入后使用下面代碼:
//進(jìn)入OTA前的mac地址 String mac = SPUtil.getStringValue(AppConstant.SP_KEY_DEVICE_ADDRESS, null); //進(jìn)入OTA后的mac地址 (在原mac上加1)final String newMac = mac.substring(0, 15) + HexUtil.algorismToHEXString(HexUtil.hexStringToAlgorism(mac.substring(15, 17)) + 1); //搜索新mac設(shè)備BleManager.viseBluetooth.setScanTimeout(10000).startScan(new PeriodMacScanCallback(newMac) {@Overridepublic void scanTimeout() {}@Overridepublic void onFind(BleDevice bleDevice) {//傳入OTA文件的uri開(kāi)始空升new DfuServiceInitiator(newMac).setDisableNotification(true).setZip(uri).start((getBaseContext()), DfuService.class);}});

總結(jié)

以上是生活随笔為你收集整理的使用Nordic芯片的手环OTA(android)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。