序文
上記ではAndroidがローカル自動アップグレードの下で、ここで詳細にアップグレード太田説明し、いくつかの方法、今、あまり話をしませんでした...
テキスト
基づきQCOM msm8953 Android7.1.2プラットフォーム。
まず、ここでupdate.zipという名前アップグレードする準備ができ太田アップグレードパッケージ、の。小さなパートナーを作る方法を知らなかったパッケージをアップグレード太田、あなたはここで突くことができます-
ここでは、我々は、アップグレードパッケージupdate.zipを得たassume've。
あなたはAndroidのシステムは、(コンテキストコンテキスト、パッケージファイルをファイル)android.os.RecoverySystemクラスで、特に、私たちが呼び出すためのいくつかのINSTALLPACKAGE APIを提供していますことを知っている必要があり、これを行うには、その後、ラインとコードを開始します。
このクラスは、多くがありますverifyPackage法の下に置かれた方法で、アップグレードパッケージを検証するために使用される方法、回収システムがアップグレードパッケージを検証することになりますが、ここでは、検証を行うには、アプリケーション層でのアップグレードパッケージすることが推奨され、事前にエラーを回避することができますあなたがAndroidの開発者向けドキュメントで読み取ることができるクラスの他のメソッドここでは、ラダーよ必要
主にこれらの2つの方法をどのように使用することを確認するために、ここまでシンプルかつコードダウン:
パブリッククラスSdCardUpgradeProcessアクティビティがRecoverySystem.ProgressListenerを{実装延び
private static final String TAG = "SdCardUpgrade";
private static final int VERIFY_COMPLETE = 70;
private static final int INSTALL_COMPLETE = 100;
private static String updatePath = "/data/ota_package/";
private String updateName = "";
private ProgressBar mProcessbar;
private TextView mUpdateStep;
private TextView mUpdateState;
private TextView mNotify;
private TextView sdcard_update_introduction_textview_one;
private TextView sdcard_update_introduction_textview_two;
private ImageView mCompleteImg;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sdcardupgrade_processbar);
UpdateInfo updateInfo = getIntent().getParcelableExtra("updateInfo");
Log.e(TAG,"name:"+updateInfo.getUpdateName());
Log.e(TAG,"cnt:"+updateInfo.getUpdateCnt());
updateName = updateInfo.getUpdateName();
mUpdateStep = (TextView)findViewById(R.id.step_number);
mUpdateState = (TextView)findViewById(R.id.processbar_title);
mNotify = (TextView)findViewById(R.id.update_notify);
mCompleteImg = (ImageView)findViewById(R.id.update_complete);
mProcessbar=(ProgressBar)findViewById(R.id.processbar);
mProcessbar.setMax(110);
mProcessbar.setProgress(0);
mProcessbar.setIndeterminate(false);
runnable.start();
}
Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
mProcessbar.setProgress(msg.arg1);
switch(msg.arg1){
case VERIFY_COMPLETE:
mUpdateStep.setText(getString(R.string.the_next_step_number));
mUpdateState.setText(getString(R.string.install_process));
mNotify.setText("");
break;
case INSTALL_COMPLETE:
mUpdateState.setText(getString(R.string.install_process_complete));
mNotify.setText(getString(R.string.restart));
mCompleteImg.setBackgroundResource(R.drawable.ic_launcher_background);
break;
default:
break;
}
}
};
Thread runnable = new Thread(){
@Override
public void run() {
if(null == updatePath || null == updateName)
return;
Log.d(TAG, "Start update .............");
File file = new File(updatePath+updateName);
Log.d(TAG, "file:" +file+"");
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "SdCardUpgrade ProcessBar");
try{
wl.acquire();//升级保持亮屏状态
RecoverySystem.verifyPackage(file, SdCardUpgradeProcess.this, null);
Log.d(TAG,"Verify package complete.");
RecoverySystem.installPackage(SdCardUpgradeProcess.this, file);
}catch(Exception e){
Log.e(TAG, e.getMessage(), e);
}finally{
wl.release();
}
}
};
@Override
public void onProgress(int progress) {
Log.d(TAG,"progress="+progress);
Message msg = Message.obtain();
msg.arg1 = progress;
mHandler.sendMessage(msg);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
System.exit(0);
}
}
PS
完全なデモダウンロードパス:AndroidOtaUpdate.rar