package android.rockchip.update.service;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.GeneralSecurityException;
import java.util.Locale;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpHead;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Binder;
import android.os.Environment;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.widget.Toast;
import android.os.SystemProperties;
public class RKUpdateService extends Service {
public static final String VERSION = "1.7.6";
private static final String TAG = "RKUpdateService";
private static final boolean DEBUG = true;
private static final boolean mIsNotifyDialog = true;
private static final boolean mIsSupportUsbUpdate = true;
private Context mContext;
private volatile boolean mIsFirstStartUp = true;
private static void LOG(String msg) {
if ( DEBUG ) {
Log.d(TAG, msg);
}
}
static {
/*
* Load the library. If it's already loaded, this does nothing.
*/
System.loadLibrary("rockchip_update_jni");
}
public static String OTA_PACKAGE_FILE = "update.zip";
public static String RKIMAGE_FILE = "update.img";
public static final int RKUPDATE_MODE = 1;
public static final int OTAUPDATE_MODE = 2;
private static volatile boolean mWorkHandleLocked = false;
private static volatile boolean mIsNeedDeletePackage = false;
public static final String EXTRA_IMAGE_PATH = "android.rockchip.update.extra.IMAGE_PATH";
public static final String EXTRA_IMAGE_VERSION = "android.rockchip.update.extra.IMAGE_VERSION";
public static final String EXTRA_CURRENT_VERSION = "android.rockchip.update.extra.CURRENT_VERSION";
public static String DATA_ROOT = "/data/media/0";
public static String FLASH_ROOT = Environment.getExternalStorageDirectory().getAbsolutePath();
public static String SDCARD_ROOT = "/mnt/external_sd";
public static String USB_ROOT = "/mnt/usb_storage";
public static String CACHE_ROOT = Environment.getDownloadCacheDirectory().getAbsolutePath();
public static final int COMMAND_NULL = 0;
public static final int COMMAND_CHECK_LOCAL_UPDATING = 1;
public static final int COMMAND_CHECK_REMOTE_UPDATING = 2;
public static final int COMMAND_CHECK_REMOTE_UPDATING_BY_HAND = 3;
public static final int COMMAND_DELETE_UPDATEPACKAGE = 4;
private static final String COMMAND_FLAG_SUCCESS = "success";
private static final String COMMAND_FLAG_UPDATING = "updating";
public static final int UPDATE_SUCCESS = 1;
public static final int UPDATE_FAILED = 2;
private static final String[] IMAGE_FILE_DIRS = {
DATA_ROOT + "/",
FLASH_ROOT + "/",
SDCARD_ROOT + "/",
USB_ROOT + "/",
};
private String mLastUpdatePath;
private WorkHandler mWorkHandler;
private Handler mMainHandler;
private SharedPreferences mAutoCheckSet;
/*----------------------------------------------------------------------------------------------------*/
public static URI mRemoteURI = null;
public static URI mRemoteURIBackup = null;
private String mTargetURI = null;
private boolean mUseBackupHost = false;
private String mOtaPackageVersion = null;
private String mSystemVersion = null;
private String mOtaPackageName = null;
private String mOtaPackageLength = null;
private String mDescription = null;
private volatile boolean mIsOtaCheckByHand = false;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mBinder;
}
private final LocalBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder {
public void updateFirmware(String imagePath, int mode) {
LOG("updateFirmware(): imagePath = " + imagePath);
try {
mWorkHandleLocked = true;
if(mode == OTAUPDATE_MODE){
RecoverySystem.installPackage(mContext, new File(imagePath));
}else if(mode == RKUPDATE_MODE){
RecoverySystem.installRKimage(mContext, imagePath);
}
} catch (IOException e) {
Log.e(TAG, "updateFirmware() : Reboot for updateFirmware() failed", e);
}
}
public boolean doesOtaPackageMatchProduct(String imagePath) {
LOG("doesImageMatchProduct(): start verify package , imagePath = " + imagePath);
try{
RecoverySystem.verifyPackage(new File(imagePath), null, null);
}catch(GeneralSecurityException e){
LOG("doesImageMatchProduct(): verifaPackage faild!");
return false;
}catch(IOException exc) {
LOG("doesImageMatchProduct(): verifaPackage faild!");
return false;
}
return true;
}
public void deletePackage(String path) {
LOG("try to deletePackage...");
File f = new File(path);
if(f.exists()) {
f.delete();
LOG("delete complete! path=" + path);
}else {
LOG("path=" + path + " ,file not exists!");
}
}
public void unLockWorkHandler() {
LOG("unLockWorkHandler...");
mWorkHandleLocked = false;
}
public void LockWorkHandler() {
mWorkHandleLocked = true;
LOG("LockWorkHandler...!");
}
}
@Override
public void onCreate() {
super.onCreate();
mContext = this;
/*-----------------------------------*/
LOG("starting RKUpdateService, version is " + VERSION);
//whether is UMS or m-user
if(getMultiUserState()) {
FLASH_ROOT = DATA_ROOT;
}
String ota_packagename = getOtaPackageFileName();
if(ota_packagename != null) {
OTA_PACKAGE_FILE = ota_packagename;
LOG("get ota package name private is " + OTA_PACKAGE_FILE);
}
String rk_imagename = getRKimageFileName();
if(rk_imagename != null) {
RKIMAGE_FILE = rk_imagename;
LOG("get rkimage name private is " + RKIMAGE_FILE);
}
try {
mRemoteURI = new URI(getRemoteUri());
mRemoteURIBackup = new URI(getRemoteUriBackup());
LOG("remote uri is " + mRemoteURI.toString());
LOG("remote uri backup is " + mRemoteURIBackup.toString());
}catch(URISyntaxException e) {
e.printStackTrace();
}
mAutoCheckSet = getSharedPreferences("auto_check", MODE_PRIVATE);
mMainHandler = new Handler(Looper.getMainLooper());
HandlerThread workThread = new HandlerThread("UpdateService : work thread");
workThread.start();
mWorkHandler = new WorkHandler(workThread.getLooper());
if(mIsFirstStartUp) {
LOG("first startup!!!");
mIsFirstStartUp = false;
String command = RecoverySystem.readFlagCommand();
String path;
if(command != null) {
LOG("command = " + command);
if(command.contains("$path")) {
path = command.substring(command.indexOf('=') + 1);
LOG("last_flag: path = " + path);
if(command.startsWith(COMMAND_FLAG_SUCCESS)) {
if(!mIsNotifyDialog) {
mIsNeedDeletePackage = true;
mLastUpdatePath = path;
return;
}
LOG("now try to start notifydialog activity!");
Intent intent = new Intent(mContext, NotifyDeleteActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("flag", UPDATE_SUCCESS);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
rockchip ota升级服务源码 (221个子文件)
0049a1f3d7c2d57c34d123be0e097ba0adf9c7 285B
014af639ece72bf60b42aa3967e6f871114176 48B
038e645ff673050e5a2469d3a78f4a6d05a7d7 6KB
06a4e661b6127cec1e552ef3056cee2f8670e1 50B
0c77e6b12977d07e564c3d3828cdda2da7aa94 233B
0f19b95eea9fcc39fa5ae9cd748ff02b64bd73 49B
rkplatform_4.1 1KB
rkplatform_4.1 999B
rkplatform_4.1 41B
rkplatform_4.1 41B
1540d67d4c2c891946b16c1e0056a9b2b1ab2f 77B
15822f9064dfa01f0bd3dac2eb21369ea632f4 7KB
1643bd61b2860f5382924b0b2e8d7c7f995e48 49B
1b2ce26398c53d6758bf57a27d2325fa8f2f92 240B
20700d6d688bde887711dc2cdc8f8cf062aceb 241B
26f31ac0b9726cf8187c70cd397e7bdbe22196 48B
27911af8deaa4922e130570d4c24f6624f739b 49B
294122ffcc476db1fc38a25a95abe31519f711 1KB
2d34c7bb11bd51d7395c211bb6de56f4545ff3 252B
37a465c1b572f07e57735fc0158e52935daa2a 77B
3bd1fffedbc623681eecf1380ee9bff95b51c1 471B
3fe6257a0c7c03e2e50c576cada5abe8b2541c 50B
3ff84daaaaa605646e1a48e499699fc4e78f35 181B
43b1039197347a8e34e39b64edb7eb6109aaab 77B
496db595991f8de4e7221f60f7d91c2c39cbb5 476B
4993b6201edf50e1fc725fa45e259ca0683d57 470B
49c357b1a2452a58c2468149f674def40c6cdd 77B
4a9b7e6c686530a88b5f8171b79b7ddaca9c91 55B
4f9699409ced1a515d7e44851c95061acca469 50B
501dcbae2644ea7b57e27e621a2f7abbc51654 78B
53d459b6ba75566ae9072eb485a2f904b4035e 162B
558a685909d205cd6c3b2eb0cc9e182a92b7ca 6KB
581857de6e1153e4afa6838f3c40356201c00e 50B
59207a1e40c277df1c2f01e296d80aa9dd14a2 823B
5d88ba9f49e1e16b0f415131d34e0707dc696c 582B
60ce4cf9bc3c87dee5be337776e54a1e2b2502 77B
624498991d23511031f03164045a69a16a8065 472B
63f862ddbf944958c737e2eb5d4823ead8d73b 188B
66ddbd4ea1cadc914f9db3b1f2e27d16e0ecdf 93KB
6af2f97b46f2c8d670f01dcd6a7ef9abdf6df6 471B
6e63f9ebe0a2e28c81897df8a205ac4bd4d6ab 1KB
72fd2f6c22435e999594d48301e209b8f10ee6 468B
7339c0f415abd5174879f8fe0192286ff82858 1KB
74740e77a67c83ba8179ccae53f8934a8db991 169B
74d0a6a4fb17a19b36c593ec9c9be27f4f8e6e 49B
7781af6b642de4dc9bb967585d56554ead18b8 124B
7baf9f9b705ab4a22b5ef562f0a0699aa98076 49B
7bcaabe363047bf9500c64d10c4b0c5fc0e47a 471B
7dd32269590f2a736a40d03a7154bbe5e2b14b 956B
7dd5a71d37d7d21456df6367c7236ebf5fe385 471B
841df9f13716a1e08ae816e444500514e2eb35 241B
84794d7c11f24066a3265431bad8ae1c5a9977 710B
86d9e1bd816a09431d6354c37f553e3edf38a6 286B
8927f4faab8c2f7c447980dccec03f25ae655f 48B
89b48b527c126e4531c5ff9766f1f4721bbfb4 334B
908150b5597ad748303af2d37e5e15d75af0f3 241B
915446decf9d53c874b56d3e75a3d15c96cad8 165B
95602434675dd0c75ac2b00e34de2b6cf3c7b9 6KB
962fdc673bc4675b9b68051c842cdff91b0f76 653B
9b78ddef715a250a75ceac7e85389635af56ef 3KB
9dd65c134acf0c248ec1ccad0b80c92957d636 50B
9f16d4fad6402053b74f589c85b9323f2b9ab1 633B
a052a86d8c26f07ed4ef09a91f4bab7dfbe7dd 49B
a0f8bf123a780e62d28ed0f20efadae8a270c7 208B
a4fcc77252cca7f2a819bc5af8a99bf4205b42 240B
aafb93b95043233773e7262140615de09eb7bd 6KB
ab30e238907af69b33434149a0335ebc12715f 774B
ab5c13be164571af1af8287f9f5309399dc4a1 48B
ad5d278f0aeabb9cd79bfef35c76091086e375 1KB
ae76a4a57516464ebf36186046d6df4ed0a081 201B
b25f2bc849c48140b529e8e3b8f5dd44efc554 214B
b529825867a486c30bcffff0b1aec27066d399 178B
b56175fc10bb8c89d26830cf0c5ae0852eb25b 48B
b88774dd24a59ab1f653abdcfc32afd72d7b0d 1KB
ba61459d805d3bd57c283bc0da44df861abf9a 1KB
bc4121a62cb2c8d131d37849157a4208526221 170B
bdbf73e97a3c2624a6c95ab5ddbd5b03e03de8 49B
be28b25e01fe61dc4d323eae521c0f71a53fcc 285B
bff9f693fb3cc8dcb0846f3715cbb5fce28500 48B
c0fcf1d3cf037c5a4cf6cedfaf8201ccfd3824 4KB
c2ba3058a311cdca159f438b39a20408b16d8d 240B
c722512ec520a7273869ac24b860090171b368 6KB
jarlist.cache 120B
cc9a99fd5f14f80da215db59ddddbd709066c0 1KB
ce888b2953076ee4a8cfe15da0093c19d22748 1KB
proguard.cfg 1KB
HTTPFileDownloadTask.class 13KB
PackageDownloadActivity.class 9KB
FTPToolkit.class 7KB
FTPFileDownloadTask.class 6KB
RKUpdateService.class 6KB
HTTPFileDownloadTask$DownloadFilePieceRunnable.class 5KB
FTPFileDownloadTask$MyFtpListener.class 5KB
RegetInfoUtil.class 4KB
UpdateAndRebootActivity.class 4KB
CustomerHttpClient.class 4KB
RecoverySystem.class 3KB
FileInfo.class 3KB
OtaUpdateNotifyActivity.class 2KB
FirmwareUpdatingActivity.class 2KB
共 221 条
- 1
- 2
- 3
资源评论
weixin_42272852
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功