android上层相关服务使用
来源:互联网 发布:林珊珊的淘宝店铺 编辑:程序博客网 时间:2024/05/17 07:25
系统服务:
public class SystemService { /** * 音视频录制service是否正在运行 */ public static boolean isRecordServiceRunning(Context context, Class<Object> clazz) { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (clazz.getName().equals(service.service.getClassName())) return true; } return false; } /** * 返回Home界面 **/ public static void goHome(Context m_con) { Intent goHome = new Intent(Intent.ACTION_MAIN); goHome.addCategory(Intent.CATEGORY_HOME); goHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); m_con.startActivity(goHome); } /** * 得到当前系统配置语言的国家 * * @param context * @return "zh_CN,en_US"下划线后半部分 */ public static String getSystemCountry(Context context) { Configuration conf = context.getResources().getConfiguration(); Locale locale = conf.locale; return locale.getCountry(); } /** * 根据字符串资源名字获取该资源ID * * @param context * @param sourcename * @return */ public static int getSourceIdBySourceName(Context context, String sourcename) { return context.getResources().getIdentifier(sourcename, "string", context.getPackageName());// 根据资源名字获得资源ID } /** * 打开系统的音乐播放器 */ public static void openMusicPlayer(Context context) { Intent intent_music = new Intent(Intent.ACTION_MAIN); intent_music.setAction(Intent.ACTION_DEFAULT); intent_music.setType("audio/*"); intent_music.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent_music); } /** * 打开系统的视频播放器 */ public static void openVideoPlayer(Context context) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setType("video/*"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } /** * add the system volume * * @param am */ public static void volumeAdd(AudioManager am) { am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI); } /** * decrease the system volume * * @param am */ public static void volumeDecrease(AudioManager am) { am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI); } /** * set the system volume size * * @param am * @param volSize */ public static void setSystemVol(AudioManager am, int volSize) { am.setStreamVolume(AudioManager.STREAM_MUSIC, volSize, AudioManager.FLAG_SHOW_UI); } /** * get system current package name * * @param context * @return */ public static String getcurrentPackageName(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasts = am.getRunningTasks(1); String currentPackageName = ""; if (tasts.size() > 0) { RunningTaskInfo rti = tasts.get(0); currentPackageName = rti.topActivity.getPackageName(); } return currentPackageName; }//判断系统中是否存在某个Activity?它是否已经启动?protected void startAndExit() { logi(TAG, "---startAndExit---"); Intent intent = new Intent(this, ActivityMain.class); ComponentName cmpName = intent.resolveActivity(getPackageManager()); boolean bIsExist = false; if (cmpName != null) { // 说明系统中存在这个activity ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); List<RunningTaskInfo> taskInfoList = am.getRunningTasks(10); logi(TAG, "---startAndExit---taskInfoList.size:" + taskInfoList.size()); for (RunningTaskInfo taskInfo : taskInfoList) { LogUtils.logi(TAG, "---startAndExit---taskInfo:" + taskInfo.baseActivity); if (taskInfo.baseActivity.equals(cmpName)) { // 说明它已经启动了 bIsExist = true; break; } } } logi(TAG, "---onStartAndExit---bIsExist:" + bIsExist); if (bIsExist) { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("isExit", (Boolean) true); //让它自行关闭 this.startActivity(intent); } } //如果某个Activity的运行模式被设置为singleTask或singleInstance,再次启动它,会触发它的onNewIntent方法。 @Override protected void onNewIntent(Intent intent) { logi(TAG, "---onNewIntent---"); super.onNewIntent(intent); if (intent.getBooleanExtra("isExit", false)) { finish(); // 自行关闭 } } /** * 得到当前显示界面Activity的名字 * * @param context * @return */ public static String getCurrentActivityName(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasts = am.getRunningTasks(1); String currentActivityName = ""; if (tasts.size() > 0) { RunningTaskInfo rti = tasts.get(0); currentActivityName = rti.topActivity.getClassName(); } return currentActivityName; } /** * 根据包名和activity名称进入该activity * * @param context * @param packageName * @param activityName */ public static boolean startActivityByPackageName(Context context, String packageName, String activityName) { if (!SystemService.isExistApp(context, packageName)) { Toast.makeText(context, "该应用已被卸载", Toast.LENGTH_LONG).show(); return false; } Intent intent = new Intent(); intent.setClassName(packageName, activityName); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); context.startActivity(intent); return true; } /** * 判断该app是否存在 * * @param context * @param pkg * @return true 存在 false 不存在 */ public static boolean isExistApp(Context context, String pkg) { PackageManager pckMan = context.getPackageManager(); List<PackageInfo> packs = pckMan.getInstalledPackages(0); int count = packs.size(); for (int i = 0; i < count; i++) { PackageInfo p = packs.get(i); if (p.versionName == null) { continue; } ApplicationInfo appInfo = p.applicationInfo; if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) { // 系统app // name = p.applicationInfo.loadLabel(pckMan).toString(); String packageName = p.packageName; if (packageName.equals(pkg)) return true; } else { // 不是系统app String packageName = p.packageName; if (packageName.equals(pkg)) return true; } } return false; } /** * ActivityManager类可以获取运行信息,如下: * <p/> * 1.getRecentTasks() 最近开的task,HOME键长按会看到这个 * <p/> * 2.getRunningAppProcesses() 运行中的作为app容器的process * <p/> * 3.getRunningServices()运行中的后台服务 * <p/> * 4.getRunningTasks() 运行中的任务 */ public static final String APP_ICON = "last_app_icon"; public static final String APP_LABEL = "last_app_label"; /** * 获取最近运行的程序列表(近期任务第一个),长按home键所示效果: * * @param context */ public static Map<String, Object> getTaskList(final Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); PackageManager pm = context.getPackageManager(); try { List<RecentTaskInfo> list = am.getRecentTasks(64, 0); for (RecentTaskInfo rti : list) { Intent intent = rti.baseIntent; ResolveInfo resolveInfo = pm.resolveActivity(intent, 0); if (resolveInfo != null) { Map<String, Object> RecentTask = new HashMap<String, Object>(); Drawable d = resolveInfo.loadIcon(pm); String app = String.valueOf(resolveInfo.loadLabel(pm)); // String packageName = resolveInfo.resolvePackageName; // System.out.println(packageName); RecentTask.put(APP_ICON, d); RecentTask.put(APP_LABEL, app); System.out.println("app = " + app); return RecentTask; } } } catch (Exception e) { e.printStackTrace(); return null; } return null; } /** * 获取正在运行的程序信息 */ public static void getRunningProcess(final Context context) { PackageManager pm = context.getPackageManager(); ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ApplicationInfo> infos = pm.getInstalledApplications(0); List<RunningAppProcessInfo> runnings = am.getRunningAppProcesses(); for (ApplicationInfo info : infos) { String appName = info.loadLabel(pm) + ""; // String s = info.labelRes+ ""; String packageName = info.packageName; String className = info.className; String name = info.name; for (RunningAppProcessInfo running : runnings) { if (running.processName.equals(packageName)) { System.out.println("-appName-" + appName + "-packageName-" + packageName + "-className-" + className + "-name-" + name);// 正在运行的应用程序名 } } } } public static List<String> getAllInstalledPackages(Context context) { List<String> allApps = new ArrayList<String>(); PackageManager pckMan = context.getPackageManager(); List<PackageInfo> packs = pckMan.getInstalledPackages(0); int count = packs.size(); for (int i = 0; i < count; i++) { PackageInfo p = packs.get(i); if (p.versionName == null) { continue; } // 判断该软件包是否在/data/app目录下 ApplicationInfo appInfo = p.applicationInfo; if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) { // 系统程序 // name = p.applicationInfo.loadLabel(pckMan).toString(); } else { // 不是系统程序 // name = p.applicationInfo.loadLabel(pckMan).toString(); String packageName = p.packageName; allApps.add(packageName); } } return allApps; } /** * 判断程序是否是栈顶程序 */ public static boolean isTopActivity(String packageName, Context context) { ActivityManager am = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks(1).get(0).topActivity; String currentPackageName = cn.getPackageName(); return (currentPackageName != null && currentPackageName.equals(packageName)); } /** * 获取当前应用的版本号: */ private String getVersionName(Context context, String packageName) throws Exception { // 获取packagemanager的实例 PackageManager packageManager = context.getPackageManager(); // getPackageName()是你当前类的包名,0代表是获取版本信息 PackageInfo packInfo = packageManager.getPackageInfo(packageName, 0); String version = packInfo.versionName; return version; } /** * 获取当前系统版本号 */ public static String getSystemVersion() { String systemVersion = android.os.Build.MODEL + "," + android.os.Build.VERSION.SDK + "," + android.os.Build.VERSION.RELEASE; return systemVersion;// ca03, 16, 4.1.1 }}
电源操作:
/** * <uses-permission android:name="android.permission.WRITE_SETTINGS" /> * <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> * <uses-permission android:name="android.permission.DEVICE_POWER" /> * <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" /> * <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> */public class BrightnessTools { /* * Android的屏幕亮度好像在2.1+的时候提供了自动调节的功能, 所以,如果当开启自动调节功能的时候, 我们进行调节好像是没有一点作用的, * 这点让我很是无语,结果只有进行判断,看是否开启了屏幕亮度的自动调节功能。 */ /** * 判断是否开启了自动亮度调节 */ public static boolean isAutoBrightness(ContentResolver contentResolver) { boolean automicBrightness = false; try { automicBrightness = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; } catch (SettingNotFoundException e) { e.printStackTrace(); } return automicBrightness; } // 然后就是要觉得当前的亮度了,这个就比较纠结了: /** * 获取屏幕的亮度 */ public static int getScreenBrightness(ContentResolver contentResolver) { int nowBrightnessValue = 0; try { nowBrightnessValue = android.provider.Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS); } catch (Exception e) { e.printStackTrace(); } return nowBrightnessValue; } // 那如何修改屏幕的亮度呢? /** * 设置亮度 */ public static void setBrightness(Activity activity, int brightness) { // Settings.System.putInt(activity.getContentResolver(), // Settings.System.SCREEN_BRIGHTNESS_MODE, // Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f); activity.getWindow().setAttributes(lp); } // 那么,能设置了,但是为什么还是会出现,设置了,没反映呢? // 嘿嘿,那是因为,开启了自动调节功能了,那如何关闭呢?这才是最重要的: /** * 停止自动亮度调节 */ public static void stopAutoBrightness(Activity activity) { Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); } // 能开启,那自然应该能关闭了哟哟,那怎么关闭呢?很简单的: /** * * 开启亮度自动调节 * * * @param activity */ public static void startAutoBrightness(Activity activity) { Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); } // 至此,应该说操作亮度的差不多都有了,结束! // 哎,本来认为是应该结束了,但是悲剧得是,既然像刚才那样设置的话,只能在当前的activity中有作用,一段退出的时候,会发现毫无作用,悲剧,原来是忘记了保存了。汗! /** * 保存亮度设置状态 */ public static void saveBrightness(ContentResolver resolver, int brightness) { Uri uri = android.provider.Settings.System.getUriFor("screen_brightness"); android.provider.Settings.System.putInt(resolver, "screen_brightness", brightness); // resolver.registerContentObserver(uri, true, myContentObserver); resolver.notifyChange(uri, null); } /** * 获得当前屏幕亮度的模式 SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度 */ private int getScreenMode(Context ctx) { int screenMode = 0; try { screenMode = Settings.System.getInt(ctx.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE); } catch (Exception localException) { } return screenMode; } /** * 设置当前屏幕亮度的模式 * * @param ctx * @param paramInt SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度 */ public static void setScreenMode(Context ctx, int paramInt) { try { Settings.System.putInt(ctx.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, paramInt); } catch (Exception localException) { localException.printStackTrace(); } } /** * 获得当前屏幕亮度值 0--255 */ private int getScreenBrightness(Context ctx) { int screenBrightness = 255; try { screenBrightness = Settings.System.getInt(ctx.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); } catch (Exception localException) { } return screenBrightness; } /** * 设置当前屏幕亮度值 0--255 */ private void saveScreenBrightness(int paramInt, Context ctx) { try { Settings.System.putInt(ctx.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, paramInt); } catch (Exception localException) { localException.printStackTrace(); } } /** * 保存当前的屏幕亮度值,并使之生效 */ private void setScreenBrightness(int paramInt, Activity ctx) { Window localWindow = ctx.getWindow(); WindowManager.LayoutParams localLayoutParams = localWindow.getAttributes(); float f = paramInt / 255.0F; localLayoutParams.screenBrightness = f; localWindow.setAttributes(localLayoutParams); }// protected void onCreate( ) {// boolean isAuto = BrightnessTools.isAutoBrightness(getContentResolver());// System.out.println("是否自动调节屏幕亮度 = " + isAuto);// }//// public void setRight() {//// BrightnessTools.setBrightness(this, 50);// BrightnessTools.saveBrightness(getContentResolver(), 50);// }//// public void currBright( ) {// int currBright = BrightnessTools.getScreenBrightness(this);// System.out.println("当前屏幕亮度:" + currBright);// }}
APP相关:
public class AppUtil { public static void installApk(Context context, File file) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); context.startActivity(intent); } public static void uninstallApk(Context context, String packageName) { Intent intent = new Intent(Intent.ACTION_DELETE); Uri packageURI = Uri.parse("package:" + packageName); intent.setData(packageURI); context.startActivity(intent); } public static boolean isServiceRunning(Context ctx, String className) { boolean isRunning = false; ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE); List<RunningServiceInfo> servicesList = activityManager.getRunningServices(Integer.MAX_VALUE); Iterator<RunningServiceInfo> l = servicesList.iterator(); while (l.hasNext()) { RunningServiceInfo si = (RunningServiceInfo) l.next(); if (className.equals(si.service.getClassName())) { isRunning = true; } } return isRunning; } public static boolean stopRunningService(Context ctx, String className) { Intent intent_service = null; boolean ret = false; try { intent_service = new Intent(ctx, Class.forName(className)); } catch (Exception e) { e.printStackTrace(); } if (intent_service != null) { ret = ctx.stopService(intent_service); } return ret; } public static int getNumCores() { try { // Get directory containing CPU info File dir = new File("/sys/devices/system/cpu/"); // Filter to only list the devices we care about File[] files = dir.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { // Check if filename is "cpu", followed by “a” single digit // number if (Pattern.matches("cpu[0-9]", pathname.getName())) { return true; } return false; } }); // Return the number of cores (virtual CPU devices) return files.length; } catch (Exception e) { // Default to return 1 core return 1; } } public static boolean isNetworkAvailable(Context context) { try { ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo info = connectivity.getActiveNetworkInfo(); if (info != null && info.isConnected()) { if (info.getState() == NetworkInfo.State.CONNECTED) { return true; } } } } catch (Exception e) { return false; } return false; } public static boolean isGpsEnabled(Context context) { LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); return lm.isProviderEnabled(LocationManager.GPS_PROVIDER); } public static boolean isWifiEnabled(Context context) { ConnectivityManager mgrConn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager mgrTel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); return ((mgrConn.getActiveNetworkInfo() != null && mgrConn.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS); } public static boolean isWifi(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) { return true; } return false; } public static boolean is3G(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) { return true; } return false; }}
屏幕DisplayUtil显示相关:
public class DisplayUtil { /** * dip转px * * @param context * @param dipValue * @return */ public static int dip2px(Context context, float dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } /** * px转dip * * @param context * @param pxValue * @return */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 获取屏幕宽度和高度,单位为px * * @param context * @return */ public static Point getScreenMetrics(Context context) { DisplayMetrics dm = context.getResources().getDisplayMetrics(); int w_screen = dm.widthPixels; int h_screen = dm.heightPixels; return new Point(w_screen, h_screen); } /** * 获取屏幕长宽比 * * @param context * @return */ public static float getScreenRate(Context context) { Point P = getScreenMetrics(context); float H = P.y; float W = P.x; return (H / W); } /** * 把dip单位转成px单位 * * @param context * context对象 * @param dip * dip数值 * @return * @使用说明 使用dp设计, 在代码里转化为不同分辨率下的px值, 显示效果一样, 占用像素值不一样 */ public static int formatDipToPx(Context context, int dip) { DisplayMetrics dm = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm); return (int) Math.ceil(dip * dm.density); } /** * 把px单位转成dip单位 * * @param context * context对象 * @param px * px数值 * @return * @使用说明 使用px设计, 在代码里转化为不同分辨率下的dp值, 显示效果长短不一样, 占用像素值一样 */ public static int formatPxToDip(Context context, int px) { DisplayMetrics dm = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm); return (int) Math.ceil(((px * 160) / dm.densityDpi)); } /** * 判断屏幕分辨率 * @param activity * @return */ public static int Dpi(Activity activity) { SharedPreferences sh = activity.getSharedPreferences("dpi", 0); DisplayMetrics dm = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(dm); int screenHeight = dm.heightPixels; int screenWidth = dm.widthPixels; // 判断高分辨率低分辨率 if (sh.getInt("dpi_type", -1) == -1) { if (screenHeight >= 960 && screenWidth >= 720) { sh.edit().putInt("dpi_type", 1).commit(); Log.i("dpi_type", "超高分辨率"); } else if (screenHeight >= 640 && screenWidth >= 480) { sh.edit().putInt("dpi_type", 2).commit(); Log.i("dpi_type", "高分辨率"); } else if (screenHeight >= 470 && screenWidth >= 320) { sh.edit().putInt("dpi_type", 3).commit(); Log.i("dpi_type", "中分辨率"); } else if (screenHeight >= 426 && screenWidth >= 320) { sh.edit().putInt("dpi_type", 4).commit(); Log.i("dpi_type", "低分辨率"); } else if (screenHeight >= 426 && screenWidth >= 320) { sh.edit().putInt("dpi_type", 4).commit(); Log.i("dpi_type", "低分辨率"); } } return sh.getInt("dpi_type", -1); } /** * 获取状态栏的高度(不能获取到状态栏的高度) * * @param context * @return */ public static int getStatusHeight(Context context) { int statusHeight = 0; Rect localRect = new Rect(); ((Activity) context).getWindow().getDecorView().getWindowVisibleDisplayFrame(localRect); statusHeight = localRect.top; if (0 == statusHeight) { Class<?> localClass; try { localClass = Class.forName("com.android.internal.R$dimen"); Object localObject = localClass.newInstance(); int i5 = Integer.parseInt(localClass.getField("status_bar_height").get(localObject).toString()); statusHeight = context.getResources().getDimensionPixelSize(i5); } catch (Exception e) { e.printStackTrace(); } } // 以下为正确获取 // Class<?> c = null; // Object obj = null; // Field field = null; // int x = 0, sbar = 0; // try { // c = Class.forName("com.android.internal.R$dimen"); // obj = c.newInstance(); // field = c.getField("status_bar_height"); // x = Integer.parseInt(field.get(obj).toString()); // sbar = getResources().getDimensionPixelSize(x); // } catch(Exception e1) { // loge("get status bar height fail"); // e1.printStackTrace(); // } return statusHeight; } /** * 用于获取状态栏的高度。 * * @return 返回状态栏高度的像素值。 */ public static int getStatusBarHeight(Context context) { // 状态栏高度 int statusBarHeight = 0; if (statusBarHeight == 0) { try { Class<?> c = Class.forName("com.android.internal.R$dimen"); Object o = c.newInstance(); Field field = c.getField("status_bar_height"); int x = (Integer) field.get(o); statusBarHeight = context.getResources().getDimensionPixelSize(x); } catch (Exception e) { e.printStackTrace(); } } return statusBarHeight; }}
阅读全文
0 0
- android上层相关服务使用
- Android 源码中添加自定义服务并提供给上层使用
- android graphic(12)—display上层相关概念、关系
- android graphic(12)—display上层相关概念、关系
- android服务相关概念
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包怎样从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包怎样从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包怎样从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包怎样从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包怎样从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包怎样从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包怎样从上层进入Recovery服务
- 国外网友制作的“重启关闭PATCHGUARD”工具(支持VISTA~8.1)
- 二维码生成工具
- 读取BMP文件并显示出来(C++实现)
- HDU 6232 Confliction
- Linux三个网络监视器之《二》——nethogs
- android上层相关服务使用
- python圣斗士(十七):令人欲罢不能的正则
- HydroComp Propcad 2005
- IDEA快捷键列表
- pd.read_csv之OSError: Initializing from file failed的解决方案
- libcurl SSL
- Tuning Java Garbage Collection for Apache Spark Applications
- javaweb学习总结(四十五)——监听器(Listener)学习二
- HDOJ 1570 A C(水题)