Android监控WIFI和GSM状态并绘制网络强度

在实际工作中,常常遇到APP显示网络强度的需求。

使用过程中涉及的应用权限如下:

    <!--wifi及网络状态-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

一、网络强度分为二个部分:

    1、手机网络GSM(2G/3G等)

        GSM需要注册PhoneStateListener监听器,通过监听网络改变,获取手机当前网络的强度。

        /* Update the listener, and start it */
        MyListener = new MyPhoneStateListener();

        Tel = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
        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
       *从得到的信号强度,每个tiome供应商有更新
       */

        @Override
        public void onSignalStrengthsChanged(SignalStrength signalStrength)
        {
            super.onSignalStrengthsChanged(signalStrength);
            //信号强度换算公式
            int astSignal = -113 + 2*signalStrength.getGsmSignalStrength();
            gsm.setText("GSM 信号强度asu :" + signalStren
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 Android Canvas 绘制网络图片的示例代码: ```java public class MainActivity extends AppCompatActivity { private Bitmap mBitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化网络图片 new Thread(new Runnable() { @Override public void run() { try { URL url = new URL("https://www.example.com/image.jpg"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); mBitmap = BitmapFactory.decodeStream(input); } catch (IOException e) { e.printStackTrace(); } } }).start(); // 绘制网络图片 final ImageView imageView = findViewById(R.id.image_view); imageView.post(new Runnable() { @Override public void run() { Bitmap bitmap = Bitmap.createBitmap(imageView.getWidth(), imageView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setFilterBitmap(true); Matrix matrix = new Matrix(); matrix.postScale((float) imageView.getWidth() / mBitmap.getWidth(), (float) imageView.getHeight() / mBitmap.getHeight()); canvas.drawBitmap(mBitmap, matrix, paint); imageView.setImageBitmap(bitmap); } }); } } ``` 这里使用了一个子线程来加载网络图片,然后在主线程中使用 Canvas 绘制图片并显示在 ImageView 中。需要注意的是,加载网络图片可能会耗时较长,需要在子线程中进行。为了保证图片加载完成后才进行绘制,这里使用了一个 ImageView 的 post() 方法,保证在 ImageView 绘制完成后再进行绘制

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值