使用Nordic芯片的手環(huán)OTA(android)
我司現(xiàn)在的手環(huán)全部切換到使用nordic方案了,現(xiàn)參照官網(wǎng)上的demo整理一下其固件升級(jí)步驟如下
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)入后使用下面代碼:
String mac = SPUtil.getStringValue(AppConstant.SP_KEY_DEVICE_ADDRESS,
null);
final String newMac = mac.substring(
0,
15) + HexUtil.algorismToHEXString(HexUtil.hexStringToAlgorism(mac.substring(
15,
17)) +
1);
BleManager.viseBluetooth.setScanTimeout(
10000).startScan(
new PeriodMacScanCallback(newMac) {
@Overridepublic void scanTimeout() {}
@Overridepublic void onFind(BleDevice bleDevice) {
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ò),歡迎將生活随笔推薦給好友。