Android监听获取手机信号强度

大家看到标题就明白了,我们有时候在电梯里,手机有时候没有信号,有的时候却有,这个是非常闹心的,要是我们能监听一下我们自己手机信号的强度就好了。这样,当我们在等重要的人士的电话,不至于接不到这个电话,如果是这个电话你没有接到的话,可能你的一生就这么平淡的过去,如果你接到了这个电话的话,也许你的一生就会发生改变。我们应该把机会掌握的自己的手里,这样我们才能去迎接改变自己的机会。

不在多说了,我们还是看看代码吧:

需要权限:
android.permission.CHANGE_NETWORK_STATE

AndroidManifest.xml文件应该看起来如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<? xml version = "1.0" encoding = "utf-8" ?>
< manifest xmlns:android = "http://schemas.android.com/apk/res/android"
     package = "Firstdroid.Tutorial.GetGsmSignalStrength" android:versionCode = "1"
     android:versionName = "1.0" >
     < application android:icon = "@drawable/icon" android:label = "@string/app_name" >
         < activity android:name = ".GetGsmSignalStrength" android:label = "@string/app_name" >
             < intent - filter>
                 < action android:name = "android.intent.action.MAIN" />
                 < category android:name = "android.intent.category.LAUNCHER" />
             </ intent >
         </ activity >
     </ application >
     < uses - sdk android:minSdkVersion = "4" />
     < uses - permission android:name = "android.permission.CHANGE_NETWORK_STATE" ></ uses >
</ manifest >

现在我们的权限已经设置好了,就得看看主要都到了什么包。

?
1
2
3
4
5
6
7
8
9
package eoe.signal;
  
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.widget.Toast;

现在我们就来看看代码吧

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class GetGsmSignalStrength extends Activity {
  
     /* 我们可以用它们onResume和onPause方法停止listene */
     TelephonyManager Tel;
     MyPhoneStateListener MyListener;
     /** Called when the activity is first created. */
  
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
  
         /* Update the listener, and start it */
         MyListener = new MyPhoneStateListener();
         Tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
         Tel.listen(MyListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
     }
  
     /* 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);
     }
  
     /* 开始PhoneState听众 */
     private class MyPhoneStateListener extends PhoneStateListener {
         /* 从得到的信号强度,每个tiome供应商有更新 */
         @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();
  
         }
     };
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中获取信号强度的代码可以通过使用TelephonyManager类来实现。以下是一个示例代码: ```java import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.telephony.PhoneStateListener; import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private TelephonyManager telephonyManager; private MyPhoneStateListener myPhoneStateListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 检查并请求权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 1); } } // 获取TelephonyManager实例 telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // 创建PhoneStateListener监听器 myPhoneStateListener = new MyPhoneStateListener(); // 注册监听器 telephonyManager.listen(myPhoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); } // 自定义PhoneStateListener private class MyPhoneStateListener extends PhoneStateListener { @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); // 获取信号强度值 int signalStrengthValue = signalStrength.getGsmSignalStrength(); // 进行相应的处理,例如显示在UI上或者进行其他操作 Toast.makeText(MainActivity.this, "信号强度:" + signalStrengthValue, Toast.LENGTH_SHORT).show(); } } @Override protected void onDestroy() { super.onDestroy(); // 取消监听器的注册 telephonyManager.listen(myPhoneStateListener, PhoneStateListener.LISTEN_NONE); } } ``` 请注意,为了获取手机信号强度,您需要在AndroidManifest.xml文件中添加相应的权限: ```xml <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ``` 相关问题: 1. 如何在Android Studio中获取手机信号强度? 2. 什么是TelephonyManager类? 3. 如何请求获取读取手机状态的权限? 4. 如何监听手机信号强度的变化?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值