`
fokman
  • 浏览: 242181 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

获得手机相关信息的实现方法

阅读更多

      本文介绍了如何通过android提供的service来获取手机的相关信息。比如:手机当前网络连接状态、运行内存使用情况、cpu型号、sd卡、ip等相关信息。
一、设置访问权限
在AndroidManifest.xml 文件中加入访问权限
  

 <!-- 连接互联网Internet权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- GPS -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 获取ip权限 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <!-- SD卡存储信息 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 网络是否连接 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 手机imei -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

 
二、主页面layout布局,采用RelativeLayout方式布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="top"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/phone_gps"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="GPS"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_gps_value"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:layout_toRightOf="@id/phone_gps"
        android:text="12321"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_network_value"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/phone_network"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/phone_network"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_network"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/phone_gps"
        android:layout_marginTop="20dp"
        android:text="网络连接"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_memory"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/phone_network"
        android:layout_marginTop="20dp"
        android:text="手机内存"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_memory_value"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/phone_memory"
        android:layout_alignBottom="@+id/phone_memory"
        android:layout_alignLeft="@+id/phone_network_value"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_cpu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/phone_memory"
        android:layout_marginTop="20dp"
        android:text="CPU"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_cpu_value"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/phone_cpu"
        android:layout_alignBottom="@+id/phone_cpu"
        android:layout_alignLeft="@+id/phone_memory_value"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_sdcard"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/phone_cpu"
        android:layout_marginTop="40dp"
        android:text="SD卡"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_sdcard_value"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/phone_sdcard"
        android:layout_alignBottom="@+id/phone_sdcard"
        android:layout_alignLeft="@+id/phone_cpu_value"
        android:layout_marginTop="40dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_dpi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/phone_sdcard_value"
        android:layout_marginTop="20dp"
        android:text="分辨率"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_dpi_value"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/phone_dpi"
        android:layout_alignLeft="@+id/phone_sdcard_value"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_ip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/phone_dpi"
        android:layout_marginTop="20dp"
        android:text="IP"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_ip_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/phone_ip"
        android:layout_alignLeft="@+id/phone_dpi_value"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_imei"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/phone_ip"
        android:layout_marginTop="20dp"
        android:text="IMEI"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_imei_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/phone_ip_value"
        android:layout_alignTop="@+id/phone_imei"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_mac"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/phone_imei"
        android:text="MAC"
        android:layout_marginTop="20dp"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/phone_mac_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/phone_imei_value"
        android:layout_below="@+id/phone_imei_value"
        android:text="Medium Text"
        android:layout_marginTop="20dp"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

 
三、主程序实现
public class MainActivity extends Activity {

private TextView gpsText;
private TextView networkText;
private TextView memoryText;
private TextView cpuText;
private TextView sdcardText;
private TextView dpiText;
private TextView ipText;
private TextView macText;
private TextView imeiText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
protected void onResume() {
super.onResume();
initView();
setGps();
getSDCardInfo();
getDisplayMetrics();
isNetConnecting();
getSystemMemory();
getCpuInfo();
getImei();
getLocalIpAddress();
getLocalMacAddress();

}
private void initView() {
gpsText = (TextView)findViewById(R.id.phone_gps_value);
networkText = (TextView)findViewById(R.id.phone_network_value);
memoryText = (TextView)findViewById(R.id.phone_memory_value);
cpuText = (TextView)findViewById(R.id.phone_cpu_value);
sdcardText = (TextView)findViewById(R.id.phone_sdcard_value);
dpiText = (TextView)findViewById(R.id.phone_dpi_value);
ipText = (TextView)findViewById(R.id.phone_ip_value);
macText = (TextView)findViewById(R.id.phone_mac_value);
imeiText = (TextView)findViewById(R.id.phone_imei_value);
}

private void setGps() {
LocationManager locationManager;
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
// 设置精度
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);// 获取一个最符合查询条件的位置提供者

Location location = locationManager.getLastKnownLocation(provider);
updateWithNewLocation(location);
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
}

private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateWithNewLocation(location);
}

public void onProviderDisabled(String provider) {
updateWithNewLocation(null);
}

public void onProviderEnabled(String provider) {
}

public void onStatusChanged(String provider, int status, Bundle extras) {
}
};

private void updateWithNewLocation(Location location) {
String latLongString;
if (location != null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
latLongString = &quot;纬度:&quot; + lat + &quot;\n&quot; + &quot;经度:&quot; + lng;
} else {
latLongString = &quot;无法获取地理信息&quot;;
}
gpsText.setText(latLongString);
}


public void getLocalIpAddress() {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ip = intToIp(ipAddress);
ipText.setText(ip);
}

private String intToIp(int i) {
return (i &amp; 0xFF) + &quot;.&quot; + ((i &gt;&gt;[img]/images/smiles/icon_cool.gif&quot; alt=&quot;[/img] &amp; 0xFF) + &quot;.&quot; + ((i &gt;&gt; 16) &amp; 0xFF)
+ &quot;.&quot; + (i &gt;&gt; 24 &amp; 0xFF);
}

/**
* 获得mac地址信息
*/
public void getLocalMacAddress() {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
macText.setText(info.getMacAddress());
}

/**
* 获取Android手机中SD卡存储信息 获取剩余空间
*/
public void getSDCardInfo() {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File path = Environment.getExternalStorageDirectory();
StatFs statfs = new StatFs(path.getPath());
long blocSize = statfs.getBlockSize();
long totalBlocks = statfs.getBlockCount();
long availaBlock = statfs.getAvailableBlocks();
long availableSize = blocSize * availaBlock;
long allSize = blocSize * totalBlocks;
sdcardText.setText(&quot;可用:&quot; + availableSize / 1024 / 1024 / 1024 + &quot;GB&quot; + &quot;  总共:&quot;
+ allSize / 1024 / 1024 / 1024 + &quot;GB&quot;);
} else {
sdcardText.setText(&quot;不可用&quot;);
}

}

public void getDisplayMetrics() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
dpiText.setText(displayMetrics.widthPixels + &quot;x&quot;
+ displayMetrics.heightPixels);
}


public void isNetConnecting() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected()) {
networkText.setText(&quot;当前无网络&quot;);
} else {
networkText.setText(&quot;当前网络正常&quot;);
}

}

/**
* 获取手机可用内存和总内存
*
*/
private void getSystemMemory() {
String availMemory = getAvailMemory();
String totalMemory = getTotalMemory();
memoryText.setText(&quot;可用内存:&quot; + availMemory + &quot;\n&quot; + &quot;总内存:&quot; + totalMemory);
}


private String getAvailMemory() {
//已使用内存
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
// mi.availMem; 表示当前系统的可用内存
return Formatter.formatFileSize(getBaseContext(), mi.availMem);
}

private String getTotalMemory() {
String sysMemInfo = &quot;/proc/meminfo&quot;;// 系统内存信息文件
String sysTotalMem;
String[] arrayOfString;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(sysMemInfo);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
//读取系统总内存
sysTotalMem = localBufferedReader.readLine();

arrayOfString = sysTotalMem.split(&quot;\\s+&quot;);
for (String num : arrayOfString) {
Log.i(sysTotalMem, num + &quot;\t&quot;);
}
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;
localBufferedReader.close();

} catch (IOException e) {
}
return Formatter.formatFileSize(getBaseContext(), initial_memory);
}

private void getCpuInfo() {
String str1 = &quot;/proc/cpuinfo&quot;;
String str2 = &quot;&quot;;
//1-cpu型号
//2-cpu频率
String[] cpuInfo = { &quot;&quot;, &quot;&quot; };
String[] arrayOfString;
try {
FileReader fr = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
str2 = localBufferedReader.readLine();
arrayOfString = str2.split(&quot;\\s+&quot;);
for (int i = 2; i &lt; arrayOfString.length; i++) {
cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + &quot; &quot;;
}
str2 = localBufferedReader.readLine();
arrayOfString = str2.split(&quot;\\s+&quot;);
cpuInfo[1] += arrayOfString[2];
localBufferedReader.close();
} catch (IOException e) {
}
cpuText.setText(&quot;cpu型号:&quot; + cpuInfo[0] + &quot;\n&quot; + &quot;cpu频率:&quot; + cpuInfo[1]);
}

private void getImei() {
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = mTelephonyMgr.getDeviceId();
imeiText.setText(imei);
}

}

最后附上源代码以供参考

执行效果图如下

 

  • 大小: 272.9 KB
分享到:
评论

相关推荐

    Android 手机获取手机号实现方法

    通过以下代码片段,我们可以获取到SIM卡的一些基本信息: ```java TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); String deviceId = tm.getDeviceId(); // 获取...

    Android获取手机号码和运营商信息的方法

    在Android平台上,获取手机的号码和运营商信息是常见的需求,特别是在开发涉及通信功能的应用时。以下是如何在Android中实现这一功能的详细步骤和相关知识点。 首先,为了获取手机号码和运营商信息,我们需要使用`...

    使用电脑MATLAB获取手机传感器数据方法

    该方法需要使用MATLAB mobile应用程序和MATLAB Support Package for Android Sensors in MATLAB,通过连接电脑和手机,实现获取手机传感器数据。 一、硬件准备 要使用电脑MATLAB获取手机传感器数据,需要以下硬件...

    Android获取手机本机号码的实现方法

    Android获取手机本机号码的实现方法 反射TelephoneManager 获取本机号码,注意一下提供的接口有的SIM卡没写是获取不到的,该接口只适配Android5.0以上版本  public String getMsisdn(int slotId) { return ...

    基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)

    本文主要介绍了如何使用JavaScript来获取手机用户的当前位置信息,包括省、市、县、街道甚至到门牌号的具体地址。实现这一功能的关键在于利用浏览器提供的地理位置服务API——Geolocation API,以及第三方地图服务...

    获取android手机信息

    以上知识点是Android开发中获取手机信息的基础,开发者可以根据需要结合这些API和类来实现相应的功能。在实际应用中,还需要考虑权限管理、用户隐私保护以及性能优化等问题。例如,获取敏感信息时必须确保已获取用户...

    获取手机信息的Demo

    在Android开发中,获取手机信息是一项常见的需求,用于实现各种功能如设备管理、数据分析或个性化服务。本Demo主要展示了如何获取手机内的各种信息,包括定位、IP地址、MAC地址、SD卡状态、屏幕分辨率、网络连接状态...

    【Android】获取手机的基本信息

    获取手机基本信息不仅有助于开发者了解运行环境,还能用于实现特定功能,如设备适配、权限管理、数据分析等。在实际开发中,需要注意获取敏感信息时遵循隐私政策,确保用户数据的安全。 综上所述,Android提供了一...

    SpringBoot中获取微信用户信息的方法

    主要介绍了SpringBoot中获取微信用户信息的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Android-史上最全、最完整,获取设备信息、获取手机唯一标识

    1. **设备型号**:通过`Build.MODEL`获取手机的品牌和型号,例如“Samsung Galaxy S21”。 2. **硬件制造商**:使用`Build.MANUFACTURER`可以获取手机的制造商,如“Samsung”。 3. **Android版本**:`Build....

    android开发中获取手机内存信息的方式

    Android 开发中获取手机内存信息的方式 Android 开发中获取手机内存信息是非常重要的,了解手机的内存信息可以帮助开发者更好地优化应用程序的性能和资源利用率。在 Android 开发中,有时候我们想获取手机的一些...

    java实现手机归属地查询

    通过查询这些数据,我们可以获取到手机号的归属地信息,包括省份、城市以及可能的运营商。 在Java中实现这个功能,我们通常需要以下步骤: 1. 数据源获取:手机归属地信息通常存储在数据库或者API服务中。你可以...

    获取手机屏幕大小

    Android 中获取手机屏幕大小可以通过使用 DisplayMetrics 类来实现。 DisplayMetrics 类描述普通显示信息的结构,例如显示大小、密度、字体尺寸等。在 Android 中,获取手机屏幕大小可以通过以下步骤来实现: 首先...

    Go-基于GO语言实现手机号码归属地信息库手机号归属地查询

    在本文中,我们将深入探讨如何使用Go语言来构建一个手机号码归属地信息库,并实现手机号码归属地查询功能。Go语言,又称Golang,是由Google开发的一种静态类型的编译型编程语言,以其简洁的语法、高效的性能以及强大...

    获取Android手机中所有短信的实现代码

    在Android平台上,获取手机中所有短信的实现代码涉及到对Android系统的Content Provider的使用。Content Provider是Android系统中数据共享和交换的重要机制,它允许应用程序访问其他应用的数据,比如短信存储在系统...

    获取手机硬件基本信息

    在Android系统中,获取手机硬件基本信息是开发过程中常见的需求,这有助于我们了解设备的硬件配置,以便优化应用的性能或实现特定功能。本教程将详细讲解如何通过编程方式获取手机的品牌、系统版本、Product以及唯一...

    android手机相关信息的获取.doc

    在Android开发中,获取手机相关信息是一项常见的任务,这有助于开发者为用户提供更加个性化和适应性的服务。以下是一些关于如何获取Android手机相关信息的关键知识点: 1. **SDK版本**: 使用`android.os.Build....

    android之获得手机相关信息总结

    在Android开发过程中,获取手机的相关信息对于许多应用程序来说是非常重要的。这不仅可以帮助开发者更好地理解用户设备的环境,还可以在某些功能实现时提供必要的支持。本文将详细介绍如何获取设备信息、屏幕信息、...

Global site tag (gtag.js) - Google Analytics