GetGSMSignalStrength () всегда возвращает 99

Я знаю, что здесь есть еще один вопрос, но я не думаю, что это относится ко мне, поскольку я уверен, что использую GSM (isGSM () возвращает true). В любом случае getCdmaDbm возвращает -1 для меня в любом случае. Я использую Android 4.1.1 и HTC One X. Вот мой код (большинство из которых не мое):

Основная деятельность:

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> 

Кто-нибудь знает, в чем проблема? Если я перейду в Настройки-> О программе-> Сеть, я вижу силу сигнала там. Разве нет способа прочитать это значение? Я попробовал несколько сторонних приложений, и ни один из них не смог прочитать мою силу сигнала. Я также пробовал собственный метод getGSMSignalBar (), но получаю исключение NoSuchMethodException.

    Как вы можете прочитать в 3GPP 127 007 8.5, реализация at+csq является необязательной (команда, которая предполагает, чтобы дать мощность сигнала). Очевидно, HTC скрывает это значение от сторонних приложений, и у них, вероятно, есть другой способ достичь этого значения для отображения в собственном собственном приложении настроек.

    Тот факт, что другие приложения также не могут получить эту информацию, оправдывает мой случай.

    Этот вопрос тесно связан с вашим – thay сказал, что HTC – один из OEM-производителей, который не стоит времени разработки, связанного с модемным.

    Попробуй это:

     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(); } 
    Intereting Posts
    Ящик навигации Изменяет фон во время прокрутки Вызывается: android.database.sqlite.SQLiteException: рядом с "": синтаксическая ошибка (код 1): при компиляции: Как разрешить java.lang.NoClassDefFoundError UserAgentConfig $ Обратные вызовы с Twilio Android ICS: удалить синий разделитель в ActionBar? ListView – перемещение изображений во время прокрутки Ожидание сенсорного ввода без блокировки игрового потока Сервис и BroadCastReceiver Класс библиотеки предупреждений proguard android.webkit.WebView зависит от класса программы android.webkit.WebViewClien Передача Android-приложений другому разработчику Установить цвет фона заголовка Поместите неопределенный прогресс в качестве нижнего колонтитула в сетке RecyclerView Когда приложение андроид получает статус «Истек» после отмены подписки в течение пробного периода Быстрое сжатие видео на Android Основной поток Android – это общий доступ к другим приложениям Более эффективный способ обновления пользовательского интерфейса от службы, чем намерения?