android service获取手机信息,Android手机的设备信息获取

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

获取MEID

public static String getMeid(Context context) {

TelephonyManager telephonyMgr = (TelephonyManager) context.getSystemService(TELEPHONY_SERVICE);

return telephonyMgr.getDeviceId();

}

获取ICCID

public static String getIccid(Context context) {

TelephonyManager telephonyMgr = (TelephonyManager) context.getSystemService(TELEPHONY_SERVICE);

return telephonyMgr.getSimSerialNumber();

}

获取IMSI

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 "";

}

获取基站信息CDMA

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 "";

}

获取周边的基站信息CDMA

public static String getBaseData(final Context mContext) {

List 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();

}

获取当前连接的Wifi

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 "";

}

获取扫描到的Wifis

public static String getWifiData(final Context mContext) {

WifiManager wifiManager = (WifiManager) mContext

.getSystemService(Context.WIFI_SERVICE);

List 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();

}

获取mac

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 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 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};

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值