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大小相关推荐

  1. python获取内存地址上存储的值

    在python中,可以通过id()这个方法来获取对象的内存地址. 但是反过来,怎么获取内存地址上存储的值? 先看一段代码: from ctypes import string_at from sys ...

  2. 解析C语言中数据在内存中的存储

    系列文章目录 文章目录 系列文章目录 前言 一.数据类型介绍 1.类型的基本归类 1.整形家族 2.浮点型家族 3.构造类型 4.指针类型 5.空类型 二.整型在内存中的存储 1.原码.反码.补码 2 ...

  3. Android 获取手机存储总大小,系统占用空间

    一.Android 存储介绍及通常查询大小 手机存储有两种,内置内存和外置内存(SD),目前可扩展内存的机型正在减少,大部分是内置存储的手机,内置128G.256G已经很常见,但如果有扩展功能的话,买 ...

  4. 创建一个动态空间存储未知大小的二维数组

    创建一个动态空间存储未知大小的二维数组 在c/c++中,数组往往只能在给定大小的时候才能使用,否则就需要创建一个足够大的数组进行存储,这样造成空间资源的浪费. 但在很多情况下,我们往往需要一个变量来确 ...

  5. C语言基础09——数据在内存中的存储。整型的存储、大小端讲解、浮点数的存储、杨辉三角、找凶手、猜名次

    目录 数据类型 基本内置类型 类型的基本分类 整型在内存中的存储 计算机中整数的三种表示方法:原码.反码.补码 大小端 练习 浮点型在内存中的存储 为什么以下程序输出结果与想象不同? 浮点数存储规则 ...

  6. Android 获取内存/存储空间大小

    Android 内存可用空间/总空间大小获取 import android.app.ActivityManager; ... public class memInfo {// 获得可用的内存publi ...

  7. C和指针之动态内存分配之(编写calloc函数,函数内部使用malloc函数来获取内存)

    1.问题 编写calloc函数,函数内部使用malloc函数来获取内存               2.代码实现 #include <stdio.h> #include <stdli ...

  8. c语言 获取可用内存大小,C语言实现获取内存信息并输出的实例

    C语言实现获取内存信息并输出的实例 实现实例代码: headfile.h #include #include #include #define TRUE 1 #define FALSE 0 #defi ...

  9. PostgreSQL数据库动态共享内存管理器——dynamic shared memory segment

    首先看dynamic_shared_memory_type GUC参数,该参数用于指定dynamic shared memory implementation类型(DSM_IMPL_POSIX.DSM ...

最新文章

  1. python 装饰器实现事件绑定_Python装饰器是怎么实现的?
  2. 快速实现dNet三层架构项目图解
  3. 3 django系列之Form表单在前端web界面渲染与入库保存
  4. drools动态配置规则_微服务实战系列(八)-网关springcloud gateway自定义规则
  5. validatebox自定义验证规则以及使用
  6. fetch与XHR的区别与优势
  7. 软件度量五步法包括_软件交付效能度量——从吞吐量和稳定性开始
  8. linux两个进程相同的地址,在虚拟内存中,两个不同的进程可以具有相同的地址吗?...
  9. Lucene 的 Scoring 评分机制
  10. python3.7如何使用enum_python3 enum模块
  11. POJ 2135 Farm Tour
  12. 托马斯微积分 从入门到失望
  13. 阿里云ECS主机绑定域名
  14. POJ 3088 Push Botton Lock 笔记
  15. 0. crash和kdump 死机问题解决-x86_64-基础知识
  16. matlab/simulink鼠标滚动设置成上下移动而不是缩放
  17. 如何自出版一本书:一份资源清单
  18. 数据库设计的六个阶段详解
  19. Base64转码和字符串互转
  20. STM32 MPU6050与匿名上位机通讯(V2.6版)

热门文章

  1. jquery获取slideToggle状态
  2. club.topsage.com内容收集
  3. 如何leader一个团队学习英语之BILL培训重现
  4. 科大讯飞考试系统怎么监考_科大讯飞的考试平台后台能检测出哪些内容?
  5. Hi3516A PWM控制不生效
  6. 新浪微博分享接口|利用jiathis自定义接口
  7. 香港八九十年代票房冠军:成龙6次,周星驰5次,周润发4次
  8. echarts 去掉最外部边框
  9. 雷蛇鼠标的宏录制:鼠标位置和点击操作的记录
  10. 【强化学习论文合集】二十六.2020国际人工智能联合会议论文(IJCAI2020)