2013-05-10 4 views
5

लौटता है मुझे पता है कि इससे संबंधित एक और सवाल है, लेकिन मुझे नहीं लगता कि यह मेरे लिए लागू होता है, क्योंकि मुझे पूरा यकीन है कि मैं जीएसएम (आईएसजीएसएम)) सच का उपयोग करता हूं)। किसी भी मामले में, getCdmaDbm मेरे लिए वैसे भी मिलता है।getGSMSignalStrength() हमेशा 99

MainActivity:

package com.example.receptionlookup; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.telephony.PhoneStateListener; 
import android.telephony.SignalStrength; 
import android.telephony.TelephonyManager; 
import android.view.Menu; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    TelephonyManager  Tel; 
    MyPhoneStateListener MyListener; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     /* Update the listener, and start it */ 
     MyListener = new MyPhoneStateListener(); 
     Tel  = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
     Tel.listen(MyListener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    /* Called when the application is minimized */ 
    @Override 
    protected void onPause() 
    { 
     super.onPause(); 
     Tel.listen(MyListener, PhoneStateListener.LISTEN_NONE); 
    } 

    /* Called when the application resumes */ 
    @Override 
    protected void onResume() 
    { 
     super.onResume(); 
     Tel.listen(MyListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); 
    } 

    /* —————————– */ 
    /* Start the PhoneState listener */ 
    /* —————————– */ 
    private class MyPhoneStateListener extends PhoneStateListener 
    { 
     /* Get the Signal strength from the provider, each tiome there is an update */ 
     @Override 
     public void onSignalStrengthsChanged(SignalStrength signalStrength) 
     { 
      super.onSignalStrengthsChanged(signalStrength); 
      Toast.makeText(getApplicationContext(), "Go to Firstdroid!!! GSM Cinr = " 
        + String.valueOf(signalStrength.getGsmSignalStrength()), Toast.LENGTH_SHORT).show(); 
     } 

    };/* End of private Class */ 

} 

AndroidManifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.receptionlookup" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.receptionlookup.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> 
</manifest> 

करता है मैं उपयोग कर रहा हूँ एंड्रॉयड 4.1.1 और एक HTC एक एक्स यहाँ मेरी कोड (जिनमें से अधिकांश मेरा नहीं है) है समस्या क्या है क्याकिसी को पता हैं? अगर मैं सेटिंग्स-> बारे में-> नेटवर्क पर जाता हूं, तो मैं वहां सिग्नल शक्ति देख सकता हूं। क्या इस मूल्य को पढ़ने के लिए कोई रास्ता नहीं है? मैंने कई तृतीय पक्ष ऐप्स की कोशिश की है, और उनमें से कोई भी मेरी सिग्नल शक्ति को पढ़ने में सक्षम नहीं है। मैंने मालिकाना getGSMSignalBar() विधि भी कोशिश की है, लेकिन मुझे NoSuchMethodException मिलता है।

+0

तो मुझे मेरे फोन पर प्रोग्राम के रूप में सिग्नल की शक्ति को देखने के लिए के लिए वहाँ वास्तव में कोई रास्ता नहीं है? –

+0

क्या कोई वैकल्पिक तरीका है जिसका मैं उपयोग कर सकता हूं? –

+0

क्या आपने किसी अन्य डिवाइस पर कोड की कोशिश की है? या सिर्फ एचटीसी वन एक्स? – Nate

उत्तर

0

जैसा कि आप 3GPP 127 007 8.5 में पढ़ सकते हैं at+csq के कार्यान्वयन वैकल्पिक है (कमांड जो सिग्नल शक्ति देने का मानना ​​है)। स्पष्ट रूप से एचटीसी तीसरे पक्ष के अनुप्रयोगों से इस मूल्य को छुपाता है और उनके पास संभवतः अपने मालिकाना सेटिंग्स एप्लिकेशन में प्रदर्शन के लिए उस मूल्य को प्राप्त करने का एक और तरीका है।

तथ्य यह है कि अन्य अनुप्रयोग भी यह जानकारी प्राप्त नहीं कर सकते हैं जो मेरी जानकारी को उचित ठहराता है।

This issue कड़ाई से आपके से संबंधित है - थाई ने कहा कि एचटीसी उन OEM में से एक है जो मॉडेम से संबंधित विकासशील समय के लायक नहीं है।

+0

लौटाएगा प्रश्न यह है कि वे इसे कैसे करेंगे? –

+0

जहां तक ​​मुझे पता है कि आप ऐसा नहीं कर सकते हैं, एचटीसी और मॉडेम विक्रेता के बीच एक निजी संचार है जिसे 'libsec-ril' नामक मूल पुस्तकालय में लागू किया गया है। यह गूगल नहीं है और ओपन सोर्स नहीं है। – Bush

0

इस प्रयास करें:

Class signalStrengthClass = signalStrength.getClass(); 
      try { 
       Method method = signalStrengthClass.getMethod(
         "getGsmSignalBar", null); 
       method.setAccessible(true); 
       Integer bars = (Integer) method.invoke(signalStrength, 
         (Object[]) null); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
+0

मुझे इस पर कोई NoSuchMethodException मिलता है। –

+0

ठीक है, क्या होगा यदि आप 'getMeclaredMethod()' के साथ 'getMethod (...)' को प्रतिस्थापित करते हैं? दुर्भाग्य से – Bush

+0

वही परिणाम। मुझे पता है कि विधि गैलेक्सी एस 2 पर काम करती है। शायद यह सिर्फ एचटीसी के लिए एक विधि नहीं है। –

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