android 獲得一個應(yīng)用程序的啟動次數(shù),運行時間等信息
轉(zhuǎn)載聲明,原文出自:http://androidkaifa.com/thread-1036-1-1.html
通過com.android.internal.os.PkgUsageStats這個類可以得到一個應(yīng)用程序的啟動次數(shù),運行時間等信息,功能很強大。但是google并沒有將這個類作為API接口提供給開發(fā)者,如果在android源碼下開發(fā),可以通過以下代碼來使用這個類:
1 import com.android.internal.app.IUsageStats; 2 import com.android.internal.os.PkgUsageStats; 3 4 //比較兩個應(yīng)用程序的啟動次數(shù)和運行時間 5 public final int compare(ApplicationInfo a, ApplicationInfo b) { 6 ComponentName aName = a.intent.getComponent(); 7 ComponentName bName = b.intent.getComponent(); 8 int result = 0; 9 //get usagestats service 10 IUsageStats mUsageStatsService = IUsageStats.Stub 11 .asInterface(ServiceManager.getService("usagestats")); 12 try { 13 //get PkgUsageStats 14 PkgUsageStats aStats = mUsageStatsService 15 .getPkgUsageStats(aName); 16 PkgUsageStats bStats = mUsageStatsService 17 .getPkgUsageStats(bName); 18 if(aStats!=null && bStats!=null) { 19 if ((aStats.launchCount > bStats.launchCount) 20 || ((aStats.launchCount == bStats.launchCount) && (aStats.usageTime > bStats.usageTime))) 21 result = -1; 22 else if ((aStats.launchCount < bStats.launchCount) 23 || ((aStats.launchCount == bStats.launchCount) && (aStats.usageTime < bStats.usageTime))) 24 result = 1; 25 else { 26 result = 0; 27 } 28 }else if(aStats!=null && bStats ==null) { 29 result = -1; 30 } else if(aStats==null && bStats !=null) { 31 result = 1; 32 } 33 } catch (RemoteException e) { 34 Log.i("TAG", "get package usage stats fail"); 35 } 36 37 return result; 38 } 39
那么如果想在sdk中使用這個 類要如果作呢--可以使用反射 的方法,代碼如下:
1 public final int compare(ApplicationInfo a, ApplicationInfo b) { 2 3 ComponentName aName = a.intent.getComponent(); 4 ComponentName bName = b.intent.getComponent(); 5 int aLaunchCount,bLaunchCount; 6 long aUseTime,bUseTime; 7 int result = 0; 8 9 try { 10 11 //獲得ServiceManager類 12 Class<?> ServiceManager = Class 13 .forName("android.os.ServiceManager"); 14 15 //獲得ServiceManager的getService方法 16 Method getService = ServiceManager.getMethod("getService", java.lang.String.class); 17 18 //調(diào)用getService獲取RemoteService 19 Object oRemoteService = getService.invoke(null, "usagestats"); 20 21 //獲得IUsageStats.Stub類 22 Class<?> cStub = Class 23 .forName("com.android.internal.app.IUsageStats$Stub"); 24 //獲得asInterface方法 25 Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class); 26 //調(diào)用asInterface方法獲取IUsageStats對象 27 Object oIUsageStats = asInterface.invoke(null, oRemoteService); 28 //獲得getPkgUsageStats(ComponentName)方法 29 Method getPkgUsageStats = oIUsageStats.getClass().getMethod("getPkgUsageStats", ComponentName.class); 30 //調(diào)用getPkgUsageStats 獲取PkgUsageStats對象 31 Object aStats = getPkgUsageStats.invoke(oIUsageStats, aName); 32 Object bStats = getPkgUsageStats.invoke(oIUsageStats, bName); 33 34 //獲得PkgUsageStats類 35 Class<?> PkgUsageStats = Class.forName("com.android.internal.os.PkgUsageStats"); 36 37 aLaunchCount = PkgUsageStats.getDeclaredField("launchCount").getInt(aStats); 38 bLaunchCount = PkgUsageStats.getDeclaredField("launchCount").getInt(bStats); 39 aUseTime = PkgUsageStats.getDeclaredField("usageTime").getLong(aStats); 40 bUseTime = PkgUsageStats.getDeclaredField("usageTime").getLong(bStats); 41 42 if((aLaunchCount>bLaunchCount)|| 43 ((aLaunchCount == bLaunchCount)&&(aUseTime>bUseTime))) 44 result = 1; 45 else if((aLaunchCount<bLaunchCount)||((aLaunchCount == 46 bLaunchCount)&&(aUseTime<bUseTime))) 47 result = -1; 48 else { 49 result = 0; 50 } 51 52 } catch (Exception e) { 53 Log.e("###", e.toString(), e); 54 } 55 56 return result; 57 } 58
如何看自己的android的詳細(xì)使用信息:
我們使用Andoroid手機時想看看自己的手機的使用情況,那么我們又如何去操作呢?也是必需得像程序這樣要自己寫一個程序才能查看吧,如果用戶不是編程的,那得怎么辦,呵,其實我們查看自己的手機使用詳情是沒有那么復(fù)雜的,今天androidkaifa.com就會大家說一下如何查詢自己的手機的使用情況,下面是具體的查看方法,
其實查看方法非常簡單,直接進(jìn)入Android的工程模式即可,操作步驟如下:(筆者的android手機系統(tǒng)是4.0)
1、首先進(jìn)入Android手機操作系統(tǒng)的撥號界面,直接輸入“*#*#4636#*#*”(不加引號)即可以快速進(jìn)入Android操作系統(tǒng)的工程測試模式。
2、在“測試”模式菜單中有手機信息“Phone information”、電池信息“Battery information”、WI-FI信息“WI-FI information”、使用狀態(tài)“Usage statistics”四個選項。
3、我們點擊選擇第二項“Battery information”進(jìn)入電池信息,然后就可以看到手機電池的詳細(xì)信息了,其中包括電量等級、電池狀態(tài)、溫度、電池材質(zhì)、電壓等等信息。
4: 我們相應(yīng)點擊其實的選擇就可以看到其實的相應(yīng)的使用詳細(xì)信息

浙公網(wǎng)安備 33010602011771號