使用Nordic芯片的手環OTA(android)
我司現在的手環全部切換到使用nordic方案了,現參照官網上的demo整理一下其固件升級步驟如下
public class DfuService extends DfuBaseService {@Overrideprotected Class<? extends Activity>
getNotificationTarget() {
return null;}
}
@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,
"升級成功", Toast.LENGTH_SHORT).show();}
@Overridepublic void onDfuAborted(String deviceAddress) {Log.e(
"dfu",
"onDfuAborted");progressDialog.dismiss();Toast.makeText(mContext,
"升級失敗,請重新點擊升級。", 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,
"升級失敗,請重新點擊升級。", 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(
"正在升級");progressDialog.setMessage(
"請稍等。。。");progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setMax(
100);progressDialog.setCancelable(
false);progressDialog.show();}
- 第四步:手機向手環發送進入OTA狀態的命令,成功進入后使用下面代碼:
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);}});
總結
以上是生活随笔為你收集整理的使用Nordic芯片的手环OTA(android)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。