android-获取手机小区信息代码设计

1.main

package com.npsmaster.phoneinfo;

import android.content.Context;
import android.os.Message;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.telephony.CellInfo;
import android.telephony.CellInfoGsm;
import android.telephony.CellInfoLte;
import android.telephony.CellInfoWcdma;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.widget.TextView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity
{
    public static final int NP_CELL_INFO_UPDATE = 1001;

    private PhoneInfoThread phoneInfoThread;
    private  int msgcount;
    public Handler mMainHandler;
    // for current
    private List<CellGeneralInfo> CellInfoList;
    private CellnfoRecycleViewAdapter myRecycleViewAdapter;
    private RecyclerView recyclerView;
    //for history
    private List<CellGeneralInfo> HistoryServerCellList;
    private CellnfoRecycleViewAdapter historyRecycleViewAdapter;
    private RecyclerView historyrecyclerView;

    void InitProcessThread()
    {
        mMainHandler = new Handler()
        {
            @Override
            public void handleMessage(Message msg)
            {
                if(msg.what == NP_CELL_INFO_UPDATE)
                {
                    msgcount++;
                    Bundle bundle = msg.getData();
                    myRecycleViewAdapter.notifyDataSetChanged();
                    historyRecycleViewAdapter.notifyDataSetChanged();
                    TextView tvTime = (TextView)findViewById(R.id.tvTimeleaps);
                    tvTime.setText("Time:" + msgcount);
                    TextView tvAllCellInfo = (TextView)findViewById(R.id.tvCellCount);
                    tvAllCellInfo.setText("("+HistoryServerCellList.size()+")");

                    TextView tvDeviceId = (TextView)findViewById(R.id.tvDeviceId);
                    tvDeviceId.setText("DeviceId:" + phoneInfoThread.deviceId);

                    TextView tvRatType = (TextView)findViewById(R.id.tvRatType);
                    tvRatType.setText("RatType:"+phoneInfoThread.ratType);

                    TextView tvMnc = (TextView)findViewById(R.id.tMnc);
                    tvMnc.setText("Mnc:"+phoneInfoThread.mnc);

                    TextView tvMcc = (TextView)findViewById(R.id.tvMcc);
                    tvMcc.setText("Mcc:"+phoneInfoThread.mcc);

                    TextView tvOperatorName = (TextView)findViewById(R.id.tvOperaterName);
                    tvOperatorName.setText("Operator:"+phoneInfoThread.operaterName);

                    TextView tvImsi
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
我了解你的要求,下面是获取手机基站信息的最新代码: ``` TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // 如果没有获得权限,则请求权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSIONS_REQUEST_LOCATION); return; } // 获取基站信息 CellLocation cellLocation = telephonyManager.getCellLocation(); if (cellLocation instanceof GsmCellLocation) { GsmCellLocation gsmCellLocation = (GsmCellLocation) cellLocation; int cid = gsmCellLocation.getCid(); int lac = gsmCellLocation.getLac(); int mcc = Integer.parseInt(telephonyManager.getNetworkOperator().substring(0, 3)); int mnc = Integer.parseInt(telephonyManager.getNetworkOperator().substring(3)); // 打印基站信息 Log.d(TAG, "CID: " + cid); Log.d(TAG, "LAC: " + lac); Log.d(TAG, "MCC: " + mcc); Log.d(TAG, "MNC: " + mnc); } else if (cellLocation instanceof CdmaCellLocation) { // CDMA 网络,暂不处理 } else { // 无法获取基站信息 Log.d(TAG, "无法获取基站信息"); } ``` 这段代码可以通过调用 TelephonyManager 类中的getCellLocation() 方法来获取手机的基站信息,如果是 GSM 网络,则强转为 GsmCellLocation 类,获取基站 ID(cid),位置区域码(lac)、移动国家代码(mcc)和移动网络代码(mnc)等信息,并打印出来。需要注意的是,该方法需要获取 ACCESS_COARSE_LOCATION 权限才能使用,因此在调用之前需要先检查是否已经获取了该权限。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值