2013-01-17 58 views
5

पर प्रसारित करने के लिए प्रसारित किया जा सकता है मैं सभी एप्लिकेशन की लॉन्च गिनती कैसे प्राप्त कर सकता हूं? मेरे पास इंस्टॉल किए गए ऐप्स की पूरी सूची है, और जब कोई एप्लिकेशन इंस्टॉल होता है तो मेरे पास प्रसारण होता है, लेकिन मुझे किसी भी ऐप्स की लॉन्च गिनती की आवश्यकता होती है। मुझे यह app इस के साथ दिखाई देता है। आपके पास सीपीयू समय, अग्रभूमि समय, और लॉन्च गिनती है ... वे इसे कैसे करते हैं ??प्रसारण लॉन्च गिनती

उत्तर

2

मैंने इसे पहले कभी नहीं किया है, लेकिन मुझे पूरा यकीन है कि http://developer.android.com/reference/android/app/ActivityManager.html आपको आवश्यक जानकारी प्रदान करता है।

+0

गतिविधि प्रबंधक के साथ आपके पास लॉन्च टाइम नहीं हो सकता है .. शायद बैटरी आंकड़ों के साथ आपके पास हो सकता है ... क्या आपको कोई विचार है कि उपयोगकर्ता के पास लंच एक एप्लिकेशन होने पर ब्रॉडकास्ट मैसेज है? धन्यवाद – AndreaC

+0

मुझे ऐसा करने के लिए वैसे भी नहीं दिख रहा है। – jsmith

+0

यह असंभव है, इस ऐप में statiscs https://play.google.com/store/apps/details?id=com.rootuninstaller.bstatspro&hl=it – AndreaC

3

अंत में मैं ऐसा करता हूं! मैं एक अलार्ममेनर बनाता हूं कि प्रत्येक मिनट चलने वाले अनुप्रयोगों की जांच करता है, यदि कोई एप्लिकेशन चल रहा है (पृष्ठभूमि या सक्रिय) मैं पिछली बार देखता हूं कि मैंने इसे देखा है। यदि यह समय एक मिनट से अधिक है तो मैं गिनती बढ़ाता हूं। अब मैं यह जांचने की कोशिश कर रहा हूं कि एप्लिकेशन को बाहरी सर्वर पर कितना डेटा भेजा गया है, मेरे पास यह डेटा है, लेकिन क्या आपको पता है कि यह डेटा है या नहीं, मैंने अपना एप्लिकेशन इंस्टॉल किया है या जब से मैं अपने स्मार्टफोन को बूट करता हूं?

Long txByte = TrafficStats.getUidTxBytes(listApp.getAppsRunning().get(i).getPid()); 

इस कोड के लिए गिनती समय

for(int i=0; i< listApp.getAppsRunning().size(); i++) 
    { 
     String pName = listApp.getAppsRunning().get(i).getPackageName(); 
     String Ldate = "0"; 
     int Nrun = 0; 
     Long Ntime = null, Ndata = null ; 
     Cursor c=db.fetchInstalled(pName); 
     if(c.moveToFirst()) 
     { 
      Nrun = c.getInt(2); 
      Ldate = c.getString(3); 
      Ntime = c.getLong(4); 
      Ndata = c.getLong(5); 


      Log.d("db", "last time: " + Nrun+ " time: " + Ldate); 
     } 

     if(Ldate.equalsIgnoreCase("0")) 
     { 
      Nrun++; 
      db.updateLaunchAndTime(Nrun, lastUpdated, pName, Ntime, Ndata); 
     } 
     else 
     { 
      SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM dd, yyyy h:mmaa"); 
      Date lastDate = null; 
      Date currentDate = null; 
      try { 
       lastDate = dateFormat.parse(Ldate); 
       currentDate = dateFormat.parse(lastUpdated); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      //int pid = android.os.Process.getUidForName(listApp.getAppsRunning().get(i).getPid()); 
      Long txByte = TrafficStats.getUidTxBytes(listApp.getAppsRunning().get(i).getPid()); 
      Log.d("pid process", "pid: " + listApp.getAppsRunning().get(i).getPid()); 

      Ndata = txByte; 

      Log.d("data send", "send: " + Ndata); 

      long diff = currentDate.getTime() - lastDate.getTime(); 
      if(diff > 100* 1000) 
      { 
       Log.d("db", "difference plus 1 min app: " + pName); 
       Nrun++; 
      } 
      Ntime = Ntime+diff; 


      db.updateLaunchAndTime(Nrun, lastUpdated, pName, Ntime, Ndata); 
     } 
     //db.insertRunningP(pName , lastUpdated); 
    } 
    db.close() 
मिल

मैं शक्ति इस कोड के उपभोग की जाँच की और कुल बैटरी के 3% से कम है तो अभी इस सबसे अच्छा समाधान है कि मैं

+0

ऐसा करने का बहुत बुरा तरीका है, क्योंकि यह बैटरी को निकाल देगा, वहां ऐसा करने के लिए कुछ बेहतर तरीका होना चाहिए। –

+0

@AndreaC अगर मैं 2 घंटे के लिए आवेदन का उपयोग करता हूं तो आपके उत्तर के अनुसार लॉन्च गिनती क्या होगी –

1

यदि आपने अपने डिवाइस को रूट किया था, तो आप विवरण सूचना फ़ाइलों को /data/system/usagestats/usage-* में विस्तृत जानकारी के लिए भी पढ़ सकते हैं।