功能专区Android技术知识Android开发

Android手机的设备信息获取

2018-03-16  本文已影响34人  倔强的炉包

最近在适配Android手机与蓝牙的通信,需要Android通过socket机制的网络通信,整理了了一些获取设备信息的参数。

public static String getMeid(Context context) {
        TelephonyManager telephonyMgr = (TelephonyManager) context.getSystemService(TELEPHONY_SERVICE);
        return telephonyMgr.getDeviceId();
 }
 public static String getIccid(Context context) {
        TelephonyManager telephonyMgr = (TelephonyManager) context.getSystemService(TELEPHONY_SERVICE);
        return telephonyMgr.getSimSerialNumber();
 }
public static String getIMSI(Context context) {
        TelephonyManager mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        return mTelephonyMgr.getSubscriberId();
 }
public static String getPhoneType(Context context) {
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        int networkType = tm.getNetworkType();
        if (networkType == NETWORK_TYPE_GSM) {
            return "GSM";
        } else if (networkType == NETWORK_TYPE_GPRS) {
            return "GPRS";
        } else if (networkType == NETWORK_TYPE_EDGE) {
            return "EDGE";
        } else if (networkType == NETWORK_TYPE_HSUPA) {
            return "HSUPA";
        } else if (networkType == NETWORK_TYPE_HSDPA) {
            return "HSDPA";
        } else if (networkType == NETWORK_TYPE_UMTS) {
            return "WCDMA";
        }
        return "";
}
  public static String getBts(Context context) {
        TelephonyManager mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        final CellLocation cellLocation = mTelephonyManager.getCellLocation();
        if (cellLocation instanceof CdmaCellLocation) {
            CdmaCellLocation cdmaCellLocation = (CdmaCellLocation) cellLocation;
            int sid = cdmaCellLocation.getSystemId();
            int nid = cdmaCellLocation.getNetworkId();
            int bid = cdmaCellLocation.getBaseStationId();
            int lon = cdmaCellLocation.getBaseStationLongitude();
            int lat = cdmaCellLocation.getBaseStationLatitude();
            return sid + "," + nid + "," + bid + "," + lon + "," + lat + ",";
        }
        return "";
}
public static String getBaseData(final Context mContext) {
        List<CellInfo> infoLists = telephonyManager.getAllCellInfo();
        StringBuilder sb = new StringBuilder();
        if (infoLists != null && infoLists.size() != 0) {
            for (CellInfo info : infoLists) {
                /** 1、GSM是通用的移动联通电信2G的基站。
                 2、CDMA是3G的基站。
                 3、LTE,则证明支持4G的基站。*/
                if (info.toString().contains("CellInfoCdma")) {
                    CellInfoCdma cellInfoCdma = (CellInfoCdma) info;
                    CellIdentityCdma cellIdentityCdma = cellInfoCdma
                            .getCellIdentity();
                    CellSignalStrengthCdma cellSignalStrengthCdma = cellInfoCdma
                            .getCellSignalStrength();
                    sb.append(cellIdentityCdma.getSystemId() + "," +
                            cellIdentityCdma.getNetworkId() + "," +
                            cellIdentityCdma.getBasestationId() + "," +
                            cellIdentityCdma.getLongitude() + "," +
                            cellIdentityCdma.getLatitude() + "," + cellSignalStrengthCdma.getCdmaDbm() + "|");
                }
            }
        }
        if (sb.toString().length() > 0) {
            return sb.toString().substring(0, sb.toString().length() - 1);
        }
        return sb.toString();
 }
public static String getWifiInfo(Context context) {
        WifiManager wifi_service = (WifiManager) context.getSystemService(WIFI_SERVICE);
        WifiInfo wifiInfo = wifi_service.getConnectionInfo();
        if (wifiInfo != null) {
            String mac = wifiInfo.getMacAddress();
            int signal = wifiInfo.getRssi();
            String ssid = wifiInfo.getSSID();
            return mac + "," + signal + "," + ssid;
        }
        return "";
}
 public static String getWifiData(final Context mContext) {
        WifiManager wifiManager = (WifiManager) mContext
                .getSystemService(Context.WIFI_SERVICE);
        List<ScanResult> list = wifiManager.getScanResults();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < list.size(); i++) {
            sb.append(bean.getMac_address())
                    .append(",")
                    .append(bean.getSignal_strength())
                    .append(",")
                    .append(bean.getWifi_name())
                    .append("|");
        }
        if (sb.toString().length() > 0) {
            return sb.toString().substring(0, sb.toString().length() - 1);
        }
        return sb.toString();
}
  public static String getMac() {
        String macSerial = null;
        String str = "";

        try {
            Process pp = Runtime.getRuntime().exec("cat /sys/class/net/wlan0/address ");
            InputStreamReader ir = new InputStreamReader(pp.getInputStream());
            LineNumberReader input = new LineNumberReader(ir);

            for (; null != str; ) {
                str = input.readLine();
                if (str != null) {
                    macSerial = str.trim();// 去空格
                    break;
                }
            }
        } catch (IOException ex) {
            // 赋予默认值
            ex.printStackTrace();
        }
        return macSerial;
}
private int atellitessNum = 0;
public Location getLocation() {
        final LocationManager locationManager = (LocationManager) getSystemService(Context
                .LOCATION_SERVICE);
        List<String> providers = locationManager.getProviders(true);
        if (ActivityCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(this,
                        Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager
                        .PERMISSION_GRANTED) {
            return null;
        }
        mBestLocation = null;
        for (String provider : providers) {
            Location location = locationManager.getLastKnownLocation(provider);
            if (location == null) {
                continue;
            }
            if (mBestLocation == null || location.getAccuracy() < mBestLocation.getAccuracy()) {
                mBestLocation = location;
            }
        }
        // TODO: 2018/3/16
        locationManager.addGpsStatusListener(new GpsStatus.Listener() {
            @Override
            public void onGpsStatusChanged(int event) {
                @SuppressWarnings("MissingPermission") GpsStatus status = locationManager.getGpsStatus(null);
                if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) {
                    int maxSatellites = status.getMaxSatellites();
                    Iterator<GpsSatellite> iters = status.getSatellites().iterator();
                    int count = 0;
                    while (iters.hasNext() && count <= maxSatellites) {
                        GpsSatellite s = iters.next();
                        count++;
                    }
                    atellitessNum = count;
                }
            }
        });
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 5, locationListener);
        return mBestLocation;
}
 //获取电池电量和充电状态
 private int[] getBattery() {
        int battery = 0, chargeState = 0;
        Intent intent = registerReceiver(null,
                new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
        if (intent != null && intent.getExtras() != null) {
            int level = intent.getIntExtra("level", 0);
            //电量的总刻度
            int scale = intent.getIntExtra("scale", 100);
            battery = (level * 100) / scale;
            int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
            boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                    status == BatteryManager.BATTERY_STATUS_FULL;
            chargeState = isCharging ? 1 : 0;
        }
        return new int[]{battery, chargeState};
}
上一篇下一篇

猜你喜欢

热点阅读