2016-04-19 3 views
25

मुझे अपने एंड्रॉइड ऐप की इंटरनेट खपत की जांच करने की आवश्यकता है। मेरे ऐप में मेरे पास कई वेब सेवा एपीआई कहलाए जा रहे हैं।मैं अपने एंड्रॉइड ऐप की नेटवर्क खपत की जांच कैसे कर सकता हूं?

मैं जानना चाहता हूं कि मेरा ऐप पूरी तरह से केबी/एमबी में इंटरनेट का कितना उपभोग करता है।

मैं इसे कैसे देख सकता हूं? क्या यह जांचने के लिए कोई उपकरण है?

+1

कैसे स्टैक ओवरफ़्लो के बाद के वर्षों में एक डुप्लिकेट 7 से अधिक नहीं इस तरह के एक सरल सवाल शुरू की है? –

+0

@ पीटर मॉर्टेंसन असल में मैं पहले से ही डुप्लिकेट के रूप में चिह्नित हूं लेकिन नेटवर्क डेटा उपयोग को प्रोग्रामेटिक रूप से प्राप्त करने के लिए सभी प्रश्न पूछे गए हैं, लेकिन इस प्रश्न में ओपी ने पूछा कि 'कुछ टूल्स का उपयोग करके इसे कैसे प्राप्त किया जाए?' –

उत्तर

24

एंड्रॉइड स्टूडियो 2.0Android Monitor में Network अनुभाग का परिचय दें जो आपकी समस्या से आपकी मदद कर सकता है।

enter image description here

Tx == Transmit Bytes Rx == Receive Bytes 
+4

मुझे यह एक पुराना सवाल पता है, लेकिन आप कैसे हैं इस उपकरण का उपयोग कर समय के लिए कुल उपयोग मेगाबाइट प्राप्त करें? ग्राफ केवल समय पर एक विशिष्ट बिंदु पर संचरण दर इंगित करता है लेकिन अब तक कुल प्रेषित आंकड़ा नहीं है। मैं उम्मीद कर रहा था कि मैं ग्राफ पर एक सेक्शन को चिह्नित कर सकता हूं और राशि प्राप्त कर सकता हूं लेकिन दुर्भाग्य से दुर्भाग्य से नहीं। – Konaras

6

दृश्य प्रयोजनों के लिए, आप के रूप में प्रबंध निदेशक ने उल्लेख पर नजर रखने में यह देख सकते हैं।

की दुकान करने के लिए, आप कर सकते हैं कि प्रोग्राम के रूप में

int UID = android.os.Process.myUid(); 
    rxBytes += getUidRxBytes(UID); 
    txBytes += getUidTxBytes(UID); 
    /** 
    * Read UID Rx Bytes 
    * 
    * @param uid 
    * @return rxBytes 
    */ 
    public Long getUidRxBytes(int uid) { 
     BufferedReader reader; 
     Long rxBytes = 0L; 
     try { 
      reader = new BufferedReader(new FileReader("/proc/uid_stat/" + uid 
        + "/tcp_rcv")); 
      rxBytes = Long.parseLong(reader.readLine()); 
      reader.close(); 
     } 
     catch (FileNotFoundException e) { 
      rxBytes = TrafficStats.getUidRxBytes(uid); 
      //e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return rxBytes; 
    } 

    /** 
    * Read UID Tx Bytes 
    * 
    * @param uid 
    * @return txBytes 
    */ 
    public Long getUidTxBytes(int uid) { 
     BufferedReader reader; 
     Long txBytes = 0L; 
     try { 
      reader = new BufferedReader(new FileReader("/proc/uid_stat/" + uid 
        + "/tcp_snd")); 
      txBytes = Long.parseLong(reader.readLine()); 
      reader.close(); 
     } 
     catch (FileNotFoundException e) { 
      txBytes = TrafficStats.getUidTxBytes(uid); 
      //e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return txBytes; 
    } 
} 
+2

अच्छा नमूना, इससे मुझे बहुत मदद मिली है। – Thirumalvalavan

+0

एंड्रॉइड 6 –

6

एक नज़र: Android Monitor

इसमें ऐसे कई विषय हैं जिन पर आप निगरानी कर सकते हैं।

आपको Network Monitor मिलेगा।

नेटवर्क मॉनिटर में किसी चल रहे एप्लिकेशन प्रदर्शित:

इन चरणों का पालन करें:

  • एक हार्डवेयर डिवाइस से कनेक्ट करें।
  • एंड्रॉइड मॉनीटर प्रदर्शित करें।
  • नेटवर्क टैब पर क्लिक करें।
  • एक ऐप प्रोजेक्ट खोलें और इसे हार्डवेयर डिवाइस पर चलाएं।
  • नेटवर्क मॉनीटर प्रारंभ करने के लिए, इसे अचयनित करने के लिए रोकें रोकें आइकन पर क्लिक करें।

किसी भी नेटवर्क यातायात नेटवर्क मॉनिटर में दिखाई देने लगता:

Enter image description here

नेटवर्क मॉनिटर राशि समय की यह डिवाइस के लिए ले जाता है संचारित और डेटा की किलोबाइट प्राप्त करने के लिए कहते हैं। वाई-अक्ष प्रति सेकेंड किलोबाइट्स में है। एक्स-अक्ष सेकंड के साथ शुरू होता है, और फिर मिनट और सेकंड, और इसी तरह।

  • नेटवर्क मॉनीटर को रोकने के लिए, इसे चुनने के लिए रोकें रोकें आइकन पर क्लिक करें।

संदर्भ: Android Monitor

+2

के बाद से काम नहीं कर रहा है यह भी उपयोगी है –

8

तीन तरीके ...

  1. आप डिवाइस/एम्युलेटर में देख सकते हैं कर रहे हैं।सेटिंग में जाएं -> डेटा उपयोग, और सूची में अपने आवेदन को खोजने Enter image description here

  2. ग्रहण में, चुनें डी डी एम एस (परिप्रेक्ष्य) -> उपकरण (बाईं ओर) से अपने पैकेज का चयन करें -> पर नेटवर्क स्टेटिस्टिक्स क्लिक करें टैब -> क्लिक करें शुरू enter image description here

  3. जैसा कि पहले ही उत्तर दिया, एंड्रॉयड स्टूडियो में, एंड्रॉयड मॉनिटर (नीचे टैब) के लिए जाने -> नेटवर्क (टैब) -> टीएक्स (संचारित डाटा)/Rx के लिए देखो (डेटा प्राप्त करें) Enter image description here

6

यदि आप किसी भी उपकरण के साथ अपने ऐप नेटवर्क खपत की जांच करना चाहते हैं तो एंड्रॉइड स्टूडियो 2.0 का उपयोग करें जिसमें आप देख सकते हैं। नीचे देखें कैसे उपयोग करने के लिए यह

नेटवर्क मॉनिटर

नेटवर्क मॉनिटर यह ट्रैक करने के लिए जब अपने आवेदन नेटवर्क अनुरोध कर रहा है संभव बनाता है। इस टूल का उपयोग करके, आप देख सकते हैं कि आपका ऐप डेटा कब और कब स्थानांतरित करता है, और अंतर्निहित कोड को उचित रूप से अनुकूलित करता है।

डेटा स्थानान्तरण की आवृत्ति की निगरानी करके, और प्रत्येक कनेक्शन के दौरान स्थानांतरित डेटा की मात्रा, आप अपने ऐप के उन क्षेत्रों की पहचान कर सकते हैं जिन्हें अधिक कुशल बनाया जा सकता है और कम बैटरी पावर का उपयोग किया जा सकता है। आम तौर पर, आपको छोटी स्पाइक्स की तलाश करनी चाहिए, जिसमें देरी हो सकती है, या इससे बाद में स्थानांतरण को पूर्ववत किया जा सकता है।

नेटवर्क मॉनिटर

में किसी चल रहे एप्लिकेशन प्रदर्शित इन चरणों का पालन करें:

  1. एक हार्डवेयर डिवाइस से कनेक्ट करें।
  2. Display Android Monitor.
  3. नेटवर्क टैब पर क्लिक करें।
  4. हार्डवेयर डिवाइस पर एक ऐप प्रोजेक्ट और run it खोलें।
  5. नेटवर्क मॉनीटर प्रारंभ करने के लिए, इसे अचयनित करने के लिए रोकें रोकें आइकन पर क्लिक करें।

Enter image description here

नेटवर्क मॉनिटर राशि समय की यह डिवाइस के लिए ले जाता है संचारित और डेटा की किलोबाइट प्राप्त करने के लिए कहते हैं। वाई-अक्ष प्रति सेकेंड किलोबाइट्स में है। एक्स-अक्ष सेकंड के साथ शुरू होता है, और फिर मिनट और सेकंड, और इसी तरह।

  1. नेटवर्क मॉनिटर को रोकने के लिए, इसे चुनने के लिए रोकें रोकें आइकन पर क्लिक करें।

या

फिर आप उदाहरण

मुख्य नीचे का उपयोग स्वयं के अनुप्रयोग के साथ नेटवर्क की खपत प्रदर्शित करना चाहते हैं।एक्सएमएल

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="16sp" 
     android:textStyle="bold" 
     android:gravity="center" 
     android:paddingBottom="20dip" 
     android:text="Traffic Stats Demo" /> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:textColor="#00ff00" 
     android:gravity="center" 
     android:text="Transmit Bytes" /> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:gravity="center" 
     android:text="0" 
     android:id="@+id/TX"/> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:textColor="#ff0000" 
     android:gravity="center" 
     android:text="Receive Bytes" /> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:gravity="center" 
     android:text="0" 
     android:id="@+id/RX"/> 
</LinearLayout> 

Main.java

import android.app.Activity; 
import android.app.AlertDialog; 
import android.net.TrafficStats; 
import android.os.Bundle; 
import android.os.Handler; 
import android.widget.TextView; 

public class Main extends Activity { 
    private Handler mHandler = new Handler(); 
    private long mStartRX = 0; 
    private long mStartTX = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mStartRX = TrafficStats.getTotalRxBytes(); 
     mStartTX = TrafficStats.getTotalTxBytes(); 
     if (mStartRX == TrafficStats.UNSUPPORTED || mStartTX == TrafficStats.UNSUPPORTED) { 
       AlertDialog.Builder alert = new AlertDialog.Builder(this); 
       alert.setTitle("Uh Oh!"); 
       alert.setMessage("Your device does not support traffic stat monitoring."); 
       alert.show(); 
     } 
     else { 
      mHandler.postDelayed(mRunnable, 1000); 
     } 
    } 

    private final Runnable mRunnable = new Runnable() { 
     public void run() { 
       TextView RX = (TextView)findViewById(R.id.RX); 
       TextView TX = (TextView)findViewById(R.id.TX); 
       long rxBytes = TrafficStats.getTotalRxBytes() - mStartRX; 
       RX.setText(Long.toString(rxBytes)); 
       long txBytes = TrafficStats.getTotalTxBytes() - mStartTX; 
       TX.setText(Long.toString(txBytes)); 
       mHandler.postDelayed(mRunnable, 1000); 
     } 
    }; 
} 
+0

इस बीमार के साथ सभी डेटा खपत मौसम पृष्ठभूमि में कुछ ऐप चल रहा है। मुझे केवल अपने ऐप के लिए इसकी ज़रूरत है। क्या यह संभव है? धन्यवाद। – DwlRathod

संबंधित मुद्दे

 संबंधित मुद्दे