android:获取APP开发中需要的数据
2017-05-23 17:03
162 查看
在app开发中经常需要获取一些app的数据或者手机信息。由于经常用到,道长就积累了一些。现在和小伙伴们分享一下。
注意:这段代码要放到Activity的onCreate()中,否则无效。
注意:这里使用的Activity必须是actionBarActivity的子类,也就是说actionBar必须存在。
然后实现代码如下:
注意:如果你的手机是水货(没有量产的手机),返回值可能是无效的IMEI。
注意:这些代码要放到Activity的onCreate()方法中。
注意:这些代码要放到Activity的onCreate()方法中。
暂时只有这么多,这个道长以后还会有补充的。希望这篇博客能够为小伙伴提供一些帮助。
一、app中的信息
1.获取控件的宽、高
这里获取的宽高并非是设置的控件的dp值,而是返回的像素值,实现代码如下:ViewTreeObserver viewTreeObserver = image_view.getViewTreeObserver(); viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { image_view.getViewTreeObserver().removeGlobalOnLayoutListener(this); Log.e("yushan", image_view.getHeight() + "," + image_view.getWidth()); } });
注意:这段代码要放到Activity的onCreate()中,否则无效。
2.获取状态栏的高
实现代码如下:private int getStatusBarHeight() { Class<?> clazz = null; Object obj = null; Field field = null; int x = 0; try { clazz = Class.forName("com.android.internal.R$dimen"); obj = clazz.newInstance(); field = clazz.getField("status_bar_height"); x = Integer.parseInt(field.get(obj).toString()); return getResources().getDimensionPixelSize(x); } catch (Exception e) { e.printStackTrace(); return 75; } }
3.获取actionBar的高度
实现代码如下:private int getActionBarHeight() { int actionBarHeight = ((ActionBarActivity) activity) .getSupportActionBar().getHeight(); if (actionBarHeight != 0) { return actionBarHeight; } final TypedValue tv = new TypedValue(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { if (((ActionBarActivity) activity).getTheme() .resolveAttribute(android.R.attr.actionBarSize, tv, true)) { actionBarHeight = TypedValue.complexToDimensionPixelSize( tv.data, getResources().getDisplayMetrics()); } } else { // 使用android.support.v7.appcompat包做actionbar兼容的情况 if (((ActionBarActivity) activity).getTheme() .resolveAttribute( android.support.v7.appcompat.R.attr.actionBarSize, tv, true)) { actionBarHeight = TypedValue.complexToDimensionPixelSize( tv.data, getResources().getDisplayMetrics()); } } return actionBarHeight; }
注意:这里使用的Activity必须是actionBarActivity的子类,也就是说actionBar必须存在。
二、手机信息
1.获取手机型号
String model = Build.MODEL;
2.获取手机品牌
String board = Build.BOARD;
3.获取手机序列号(IMEI)
首先在清单文件中添加权限:<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
然后实现代码如下:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String szImei = TelephonyMgr.getDeviceId();
注意:如果你的手机是水货(没有量产的手机),返回值可能是无效的IMEI。
4.获取手机屏幕的宽、高
DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; // 屏幕宽度(像素) int height = metric.heightPixels; // 屏幕高度(像素)
注意:这些代码要放到Activity的onCreate()方法中。
5.获取手机屏幕的像素密度
DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
注意:这些代码要放到Activity的onCreate()方法中。
6.获取手机内存大小
// 获取android当前可用内存大小 private String getAvailMemory() { ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); am.getMemoryInfo(mi); // mi.availMem; 当前系统的可用内存 return Formatter.formatFileSize(getBaseContext(), mi.availMem);// 将获取的内存大小规格化 } private String getTotalMemory() { String str1 = "/proc/meminfo";// 系统内存信息文件 String str2; String[] arrayOfString; long initial_memory = 0; try { FileReader localFileReader = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192); str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小 arrayOfString = str2.split("\\s+"); for (String num : arrayOfString) { Log.i(str2, num + "\t"); } initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte localBufferedReader.close(); } catch (IOException e) { } return Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte转换为KB或者MB,内存大小规格化 }
7.获取SD卡的容量
public void SDKSPace(){ //获取SDcard的目录 File SDcardDir = Environment.getExternalStorageDirectory(); //获取SDcard的容量 long totalSpace = SDcardDir.getTotalSpace(); //获取SDcard的可用容量 long usableSpace = SDcardDir.getUsableSpace(); //转换SDcard的容量 String total = Formatter.formatFileSize(this, totalSpace); String usable = Formatter.formatFileSize(this, usableSpace); rom.setText("SD卡总容量:" + total + " 可用容量:" + usable); }
暂时只有这么多,这个道长以后还会有补充的。希望这篇博客能够为小伙伴提供一些帮助。
相关文章推荐
- android app如何从数据库中获取需要的数据?
- Android 端天气预报APP的实现(五)全国各地城市数据的获取
- Android开发使用Web Service获取数据
- Android开发:用getDrawingCache方法获取ImageView中的图像需要注意的问题 本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http:/
- 用SugarORM快速开发需要同步和保存大量数据的Android互联网客户端
- android手机如何获取某APP的页面耗时数据(命令行方式)
- 用SugarORM快速开发需要同步和保存大量数据的Android互联网客户端
- 分享Android开发实用小工具:图标批量提取工具:为APP开发快速获取资源
- Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取
- Android网络开发之实时获取最新数据
- 【万里征程——Windows App开发】文件&数据——获取文件属性
- Android开发17——获取网络资源之XML数据
- Android开发:按一定频率同时获取多个传感器数据
- app 版本更新的时候,android开发人员需要的工作
- Android应用开发之获取web服务器xml数据
- Android 常用开发工具类之 AppVersionUtil (获取应用版本信息工具)
- Android开发——获取应用数据/缓存大小并清理缓存
- Android日历开发:日历显示需要准备哪些数据
- Android开发17——获取网络资源之XML数据
- Android开发18——获取网络资源之json数据