动态获取(内存)DDR和(存储)EMCC大小
1.动态获取DDR
/** Copyright (C) 2017 The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
package com.android.settings.deviceinfo;
import android.content.Context;
import android.os.Build;
import android.util.Log;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.SWLogger;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.DeviceInfoUtils;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;public class StoragePreferenceController extends BasePreferenceController {private static final String TAG = "DeviceModelPrefCtrl";private static SWLogger log = SWLogger.getLogger(StoragePreferenceController.class);public StoragePreferenceController(Context context, String key) {super(context, key);}@Overridepublic void displayPreference(PreferenceScreen screen) {super.displayPreference(screen);}@Overridepublic int getAvailabilityStatus() {return AVAILABLE;}@Overridepublic CharSequence getSummary() {return getStorage();}public String getStorage() {int flashSize = (int) getFlashSize();String value = String.valueOf(flashSize) + "GB";log.d("getStorage==size==" + value);return value;}private float getFlashSize() {Process process = null;InputStream inputStream = null;InputStreamReader inputStreamReader = null;BufferedReader bufferedReader = null;float flashSize = 0L;try {process = Runtime.getRuntime().exec("cat /sys/block/mmcblk2/size");inputStream = process.getInputStream();byte[] bytes = new byte[1024];inputStreamReader = new InputStreamReader(inputStream); //读取//创建字符流缓冲区bufferedReader = new BufferedReader(inputStreamReader); //从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的String line = bufferedReader.readLine();if (line != null) {long size = Long.parseLong(line);log.e("getFlashSize==Size==" + size);if (size > 0) {flashSize = (float) size / 1024L / 1024L / 2L;log.e("getFlashSize==flashSize==" + flashSize);}}} catch (Exception e) {e.printStackTrace();} finally {try {if (process != null) {process.destroy();}if (inputStream != null) {inputStream.close();}if (inputStreamReader != null) {inputStreamReader.close();}if (bufferedReader != null) {bufferedReader.close();}} catch (Exception e) {e.printStackTrace();}}return flashSize = Math.round((float) flashSize) + 1;}}
2.获取EMCC大小
/** Copyright (C) 2017 The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
package com.android.settings.deviceinfo;
import android.content.Context;
import android.os.Build;
import android.util.Log;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.SWLogger;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.DeviceInfoUtils;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;public class StoragePreferenceController extends BasePreferenceController {private static final String TAG = "DeviceModelPrefCtrl";private static SWLogger log = SWLogger.getLogger(StoragePreferenceController.class);public StoragePreferenceController(Context context, String key) {super(context, key);}@Overridepublic void displayPreference(PreferenceScreen screen) {super.displayPreference(screen);}@Overridepublic int getAvailabilityStatus() {return AVAILABLE;}@Overridepublic CharSequence getSummary() {return getStorage();}public String getStorage() {int flashSize = (int) getFlashSize();String value = String.valueOf(flashSize) + "GB";log.d("getStorage==size==" + value);return value;}private float getFlashSize() {Process process = null;InputStream inputStream = null;InputStreamReader inputStreamReader = null;BufferedReader bufferedReader = null;float flashSize = 0L;try {process = Runtime.getRuntime().exec("cat /sys/block/mmcblk2/size");inputStream = process.getInputStream();byte[] bytes = new byte[1024];inputStreamReader = new InputStreamReader(inputStream); //读取//创建字符流缓冲区bufferedReader = new BufferedReader(inputStreamReader); //从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的String line = bufferedReader.readLine();if (line != null) {long size = Long.parseLong(line);log.e("getFlashSize==Size==" + size);if (size > 0) {flashSize = (float) size / 1024L / 1024L / 2L;log.e("getFlashSize==flashSize==" + flashSize);}}} catch (Exception e) {e.printStackTrace();} finally {try {if (process != null) {process.destroy();}if (inputStream != null) {inputStream.close();}if (inputStreamReader != null) {inputStreamReader.close();}if (bufferedReader != null) {bufferedReader.close();}} catch (Exception e) {e.printStackTrace();}}return flashSize = Math.round((float) flashSize) + 1;}}
动态获取(内存)DDR和(存储)EMCC大小相关推荐
- python获取内存地址上存储的值
在python中,可以通过id()这个方法来获取对象的内存地址. 但是反过来,怎么获取内存地址上存储的值? 先看一段代码: from ctypes import string_at from sys ...
- 解析C语言中数据在内存中的存储
系列文章目录 文章目录 系列文章目录 前言 一.数据类型介绍 1.类型的基本归类 1.整形家族 2.浮点型家族 3.构造类型 4.指针类型 5.空类型 二.整型在内存中的存储 1.原码.反码.补码 2 ...
- Android 获取手机存储总大小,系统占用空间
一.Android 存储介绍及通常查询大小 手机存储有两种,内置内存和外置内存(SD),目前可扩展内存的机型正在减少,大部分是内置存储的手机,内置128G.256G已经很常见,但如果有扩展功能的话,买 ...
- 创建一个动态空间存储未知大小的二维数组
创建一个动态空间存储未知大小的二维数组 在c/c++中,数组往往只能在给定大小的时候才能使用,否则就需要创建一个足够大的数组进行存储,这样造成空间资源的浪费. 但在很多情况下,我们往往需要一个变量来确 ...
- C语言基础09——数据在内存中的存储。整型的存储、大小端讲解、浮点数的存储、杨辉三角、找凶手、猜名次
目录 数据类型 基本内置类型 类型的基本分类 整型在内存中的存储 计算机中整数的三种表示方法:原码.反码.补码 大小端 练习 浮点型在内存中的存储 为什么以下程序输出结果与想象不同? 浮点数存储规则 ...
- Android 获取内存/存储空间大小
Android 内存可用空间/总空间大小获取 import android.app.ActivityManager; ... public class memInfo {// 获得可用的内存publi ...
- C和指针之动态内存分配之(编写calloc函数,函数内部使用malloc函数来获取内存)
1.问题 编写calloc函数,函数内部使用malloc函数来获取内存 2.代码实现 #include <stdio.h> #include <stdli ...
- c语言 获取可用内存大小,C语言实现获取内存信息并输出的实例
C语言实现获取内存信息并输出的实例 实现实例代码: headfile.h #include #include #include #define TRUE 1 #define FALSE 0 #defi ...
- PostgreSQL数据库动态共享内存管理器——dynamic shared memory segment
首先看dynamic_shared_memory_type GUC参数,该参数用于指定dynamic shared memory implementation类型(DSM_IMPL_POSIX.DSM ...
最新文章
- python 装饰器实现事件绑定_Python装饰器是怎么实现的?
- 快速实现dNet三层架构项目图解
- 3 django系列之Form表单在前端web界面渲染与入库保存
- drools动态配置规则_微服务实战系列(八)-网关springcloud gateway自定义规则
- validatebox自定义验证规则以及使用
- fetch与XHR的区别与优势
- 软件度量五步法包括_软件交付效能度量——从吞吐量和稳定性开始
- linux两个进程相同的地址,在虚拟内存中,两个不同的进程可以具有相同的地址吗?...
- Lucene 的 Scoring 评分机制
- python3.7如何使用enum_python3 enum模块
- POJ 2135 Farm Tour
- 托马斯微积分 从入门到失望
- 阿里云ECS主机绑定域名
- POJ 3088 Push Botton Lock 笔记
- 0. crash和kdump 死机问题解决-x86_64-基础知识
- matlab/simulink鼠标滚动设置成上下移动而不是缩放
- 如何自出版一本书:一份资源清单
- 数据库设计的六个阶段详解
- Base64转码和字符串互转
- STM32 MPU6050与匿名上位机通讯(V2.6版)