标签: ROM

Android 获取内存信息(RAM,ROM)

一、RAM,ROM简单介绍
RAM为运行内存,比如,360手机助手的悬浮窗,经常提示的运行内存超过80%之类的,指的都是运行内存。一般大小为几个G。

ROM为存储数据的内存,比如,爱奇艺APP在视频页面显示的“总空间31.6G,剩余28.8G”,指的是ROM。一般大小几十G,几百G都有。ROM越大,可存储的视频,文件,音乐等越多。

 

二、Android 获取RAM,ROM的方法
1. 布局:很简单,就两个TextView

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical” >

<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”TextView” />

<TextView
android:id=”@+id/textView2″
android:layout_marginTop=”10dp”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”TextView” />

</LinearLayout>
2. java代码中对应的方法及说明:

public class MainActivity extends Activity{
private TextView tv1;
private TextView tv2;

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memory_test);
tv1 = (TextView) findViewById(R.id.textView1);
tv2 = (TextView) findViewById(R.id.textView2);

//获取运行内存的信息
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo info = new MemoryInfo();
manager.getMemoryInfo(info);
StringBuilder sb = new StringBuilder();
sb.append(“可用RAM:”);
sb.append(info.availMem + “B”);
sb.append(“,总RAM:”);
sb.append(info.totalMem + “B”);
sb.append(“\r\n”);
sb.append(Formatter.formatFileSize(getBaseContext(), info.availMem));
sb.append(“,”);
LogUtil.print(“totalMem:” + info.totalMem);
sb.append(Formatter.formatFileSize(getBaseContext(), info.totalMem));
tv1.setText(sb);

sb.setLength(0);
//获取ROM内存信息
//调用该类来获取磁盘信息(而getDataDirectory就是内部存储)
final StatFs statFs = new StatFs(Environment.getDataDirectory().getPath());
long totalCounts = statFs.getBlockCountLong();//总共的block数
long availableCounts = statFs.getAvailableBlocksLong() ; //获取可用的block数
long size = statFs.getBlockSizeLong(); //每格所占的大小,一般是4KB==
long availROMSize = availableCounts * size;//可用内部存储大小
long totalROMSize = totalCounts *size; //内部存储总大小
sb.append(“可用block数:” + availableCounts);
sb.append(“block总数:” + totalCounts);
sb.append(“\r\n”);
sb.append(” 每个block大小:” + size);
sb.append(“\r\n”);
sb.append(” 可用ROM:” + availROMSize + “B”);
sb.append(” 总ROM:” + totalROMSize + “B”);
tv2.setText(sb);

}

}
3. 效果展示

%title插图%num

建设有中国特色的Android M&N(Android6.0和7.0新特性分析)

Android N已经发布有段时间,甚至马上都要发布Android 7.1,相信不少玩机爱好者已经刷入*新的Android N 7.1 Beta ROM 体验起来,即使你没有能够刷入的设备,通过模拟器来先行体验下,也不错。

不过对于Android的ROM来说,特别是国内的ROM厂家,估计就比较头大了,Merge代码估计要疯了。下面,我们就来看看Android N到现在给我们带来哪些新特性,以及这些新特性如何运用在自己的App中(这里包括了Android M&N,即Android 6.0和Android 7.0的新特性)。

运行时权限系统

这个应该是M&N系统更新以来*大的特性修改,也是各个ROM厂商*大的梦魇,因为这个功能,大部分的ROM厂商——都已经自己实现了!而现在,Google提出了统一的权限管理系统,真是非常符合Google的一贯作风——养肥了就杀!

这个权限管理系统并不是在ROM级别进行的控制,而是将权限申请工作交给了App开发者,由他们来把控App的使用权限,这样有利有弊,利是用户可以更加方便、自由的控制自己的隐私权限,这一点类似于iOS的权限控制,但Android并不是ROM直接托管的;而弊端,就是用户可能无法判断这个权限的作用而关闭这个权限,导致App无法正常工作。

所以,对于要适配Android M&N的App来说,权限的管理与交互是适配的重中之重,而且也是以前从来没有过的新概念——如何去设计权限申请的交互逻辑,考验产品经理的时候到了。

权限系统基本概念

现在Android把权限分为了敏感权限与非敏感权限,对于非敏感权限,开发者同样是在AndroidMainifest中进行权限申请,这些权限会在Android App安装的时候显示出来,与现在一样,而敏感权限,则会通过Dialog的方式在使用时弹出,如图所示。
图片描述

对于一个敏感权限来说,他有两条命,*条命是在*次显示该权限的时候,如果这个使用用户点击拒*,那么*条命就没了,当App第二次使用到这个权限的时候,界面会多出一个『不再询问』的选项,如果用户这里再继续拒*,或者勾选『不再询问』,那么第二条命就Game Over了,只能让用户去Setting中手动去管理这个权限了。

权限系统的交互

这段应该让产品经理来写。

不过作为开发者和用户,我也来写一点。
首先要知道的是,不管怎么交互,在Android M&N之后,用户都可以把App的某个敏感权限关闭,所以,权限系统的交互,实际上就是引导用户了解App所需要使用的权限,已经引导用户相信这些权限的使用是合理的(当然,基本都是不合理的)。

Google在他的官方文档中,给我们提供了四种权限交互的设计方式,我们可以来参考下:

  • Educate before asking

    这种就是类似于在闪屏页提示用户『我们需要哪些权限哦,这些权限是干嘛的哦,亲你一定要在弹出对话框的时候同意哦亲』。

  • Ask up-front

    这种方式简单粗暴,就是一上来就把需要申请的权限全部给用户,让他一个个去点,这种方式*简单,但也*野蛮,如果你的App敏感权限非常多,估计用户要崩溃的,可能会带来大量的流失。

  • Ask in context

    这种方式就是在用户使用到某个权限的时候,才去提醒用户权限的使用,这样的好处是,用户可以很清楚现在的权限作用,比如我现在要语音搜索,那么App提示需要麦克风权限,这很正常啊,就同意了。

  • Educate in context

    这种方式应该是第三种方式的补充,用于那些不是很明显的权限使用意图,例如我现在要拍照,你跟我申请定位权限,为啥呢,你需要解释下,可以记录照片的地理位置,这样我就知道了,否则我就会很奇怪,拍照要定位干嘛呢?

Chrome

作为Google的老牌App,Chrome在国外的浏览器市场上,已经占领了*对的优势,所以,原本在Android中自带的浏览器,就是Chrome浏览器,而不是国内这些ROM的什么250安全浏览器、企鹅浏览器等等。

那么Google在Android M&N中,对Chrome进行了一系列的优化,可惜,很多国内ROM都没法使用,但如果你的App的目标人群是一些可以使用Chrome的用户,那么这些新特性,就是你一定需要了解的。

Chrome App Links

这个就相当于在Web中使用Scheme来进行App的跳转功能一样,只不过这里Chrome默认就支持了,用户只需要搜索相关的关键词,就可以直接显示App,然后通过App Link直接启动App,如图所示。

图片描述

这个东西对用户来说应该是一件非常好、方便的事情,但由于国内这些浏览器的问题,不知道能否会兼容这个功能。

Android Pay

呵呵哒,算了不讲了,国内厂商都希望用自己的,这也就导致了被Apple独揽天下。什么时候这些ROM厂家能放弃这些利益,用Google提供的默认API支持,Android Pay就可以和Apple Pay分庭抗*了,毕竟现在在国外,Android Pay已经非常成熟了,而且新的指纹API的加入,让安全等级更上一层楼。

另外提一点,Android现在的安全等级已经非常高了,像指纹信息这些东西,都存储在单独的安全芯片上,而且,新的指纹API让开发者也可以非常方便的去使用指纹,不管是从用户还是开发者的角度来说,使用Android提供的原生安全方式,*对是好于自己实现的。

Direct Share

一个小的功能点,App可以实现Android提供的API,在分享的时候,直接将分享内容分享到更加精细的目标,例如联系人中的某个联系人,这样可以节省用户重新打开App的时间,也拓展了App之间的信息分享。

Notification && Notification Menu

通知真的是Android*iOS的一个巨大的筹码,可惜,很多国内ROM将通知改的一塌糊涂,很多关于Notification的新特性都无法使用,Notification带来的新的交互体验,也无法实现,可悲可叹。

通知栏样式修改

通知栏的样式修改,总体来说,让Notification的使用更加方便了,同时也更加好看,Google在2016的IO大会上也着重讲了,大家可以参考IO大会上的内容,这里放几种截图,大家随便体会下。

图片描述

图片描述

图片描述

通知栏快捷回复

在Android N上,Android对通知栏进行了进一步的优化,其中一个非常大的改变就是让用户可以在通知栏上直接对通知进行回复,这对于一些IM类的App来说,提供了更加友好的回复功能。

通知栏消息分组

如同描述的一样,系统可以支持对通知消息进行合并,相比于iOS的通知一条条展示来说,简直不能再赞了。

菜单选项定制

在Android N上,用户可以通过『Edit』按钮来定制自己的快捷菜单,是的,这也是很多厂商的ROM都已经有的功能,Google再一次养肥了杀了。

图片描述

这一功能的优势在于App可以定制自己的快捷功能,让使用频率高的一些功能,集成到系统的快捷菜单中。

Text Selection

Android M在系统级别,提供了对文字选择的API拓展,在以前的版本上,长按后,文字只提供剪贴、复制这些系统功能,而现在,系统为App提供了更多的访问接口,官方给出的例子比较复杂,如图所示。

图片描述

现在已经有App适配了这个功能了,如图所示。

图片描述

图片描述

可以看见,这一功能,对一些翻译类的App来说简直就是福音,同时,对于自己的App内部,通过这种方式,也可以产生很多比较好的交互体验。

系统级电话黑名单

难道国内的电信诈骗已经惊动了Google?不过这总归也算是一件好事,在Android N上,系统提供了黑名单的API,App可以调用,了解被拉入黑名单的电话信息。

Doze && App Standby

自从Android M开始,Google在Android中就加入了这样一个『省电』的机制,到Android N,这一机制被进一步完善,但不知道国内的ROM厂家会如何看待这个功能,或许会被阉割,或许省电阀值会被修改,目前还不得而知。但Google已经在官方文档中对这样一个功能App所需要的适配提供了解决方案:

https://developer.android.com/training/monitoring-device-state/doze-standby.html

App需要参照这个解决方案,来处理Doze和App Standby的功能与限制。

系统分屏多任务

Android N提供的一个比较大的特色功能,就是应用的分屏功能,当然,这依然是一个Google养肥了再杀的功能,很多ROM,例如LG、三星,其实很早之前就已经支持了,不过Google这次的实现更加完整、更加丰富。

图片描述

图片描述

那么分屏功能究竟有哪些使用场景呢?这依然是一个产品经理要解决的问题,对于开发者来说,我们在适配多设备分辨率、屏幕的同时,又增加了一个对系统分屏的适配工作,还好这些事情,Google都帮我们写好了文档。

VR

Android N的一个很大的特点就是对VR虚拟现实的支持,这东西现在越来越火,但在手机设备上,效果并不是很好,所以,Android N上对VR的支持,实际上是使用了一个新的跨平台图形计算库——Vulkan,所以说,如果一个手机支持VR,那么从某种意义上来说,这个手机的性能应该是很赞的!

以上,就是Android M&N的一些新特性,以及他们如何能够运用在我们自己的App中,希望大家能够多使用这些新特性来持续优化我们的App,为建设社会主义特色的App而奋斗!!!

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速