2013-03-02 39 views
1

我曾試過這個顯示我的evdo dbm。 它可以在我的模擬器上運行,但不能在我的真實設備上運行,爲什麼? 有沒有什麼不對? 這是我的源代碼:得到Android設備上的cdma dbm

package com.cdbmsof2; 

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

public class CdBmSOF2MainActivity extends Activity implements OnClickListener { 
TextView dateAndTimeLabel; 
private Button closeButton; 
private int signalDBM = 0; 

public class GetParams extends PhoneStateListener 
{ 

    @Override 
    public void onSignalStrengthsChanged(SignalStrength signalStrength) 
    { 
     super.onSignalStrengthsChanged(signalStrength); 
     signalDBM = signalStrength.getEvdoDbm(); 
    } 
} 

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.activity_cd_bm_sof2_main); 


    GetParams listener = new GetParams(); 
    TelephonyManager TelManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    TelManager.listen(listener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); 

    Button btn=(Button)findViewById(R.id.start); 
    btn.setOnClickListener(this);    
} 

public void onClick(View v) { 
    switch (v.getId()) { 
      case R.id.start: 
       Toast.makeText(this, "CDMA signal strength is " + this.signalDBM , Toast.LENGTH_SHORT).show(); 
       break;      
    } 
}  

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_cd_bm_sof2_main, menu); 
    return true; 
} 
} 

這是我的manifest.xml:

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

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

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".CdBmSOF2MainActivity" 
      android:label="@string/title_activity_cd_bm_sof2_main" > 
      <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.CHANGE_NETWORK_STATE" /> 
</manifest> 

任何一個人願意幫助我嗎?最好的祝福。

+1

什麼是錯誤? – StarPinkER 2013-03-02 02:44:12

+0

您還會計算出dBm中的百分比嗎?關於dBm範圍的任何想法或如何將其轉換爲%? – 3c71 2013-04-04 01:27:10

回答

0

您可能要更改MODIFY許​​可權爲READ許可你不是修改手機狀態,而是試圖閱讀:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
0

我想你的代碼,但signalDBM的價值不會更改。即使沒有互聯網連接,它也會保持不變。我正在嘗試做類似的事情,你的代碼對我有很好的幫助,但是現在我面臨着這個問題。該程序是否會更改您的值?請讓我知道..