`

android学习笔记一(电池、内存、系统文件)

阅读更多

电池信息验证

 

1、  查看电池信息需要接收一个系统广播,一旦电池信息发生变化,应用程序能够立即显示电池新信息。android系统提供了一个Intent.ACTION_BATTERY_CHANGED广播Action,只要把它注册到广播接收器,即可获取电池信息。

//mBatteryInfoReceiver:用来接收手机电池信息变化时候产生的广播
//Intent.ACTION_BATTERY_CHANGED 电池状态发生变化,他会自动向系统广播Action
 //将电池广播数据(Intent)注册到mBatteryInfoReceiver中
        registerReceiver( mBatteryInfoReceiver, new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) );

 

 

2、mBatteryInfoReceiver为广播接收器,一旦发出Intent.ACTION_BATTERY_CHANGED,系统自动调用BroadcastReceiver方法。在BroadcastReceiver里面可以通过intent获取电池的数据

 private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver( ) {
       //如果应用程序接收到系统的发送的广播,就会执行调用onReceive函数
       @Override
       public void onReceive( Context context, Intent intent )
       {
           ……略
	//从intent里面得到数据,level表示当前电量的值,0为默认值
	int level = intent.getIntExtra( "level", 0 );
   	 //scale表示电量的总刻度,默认值为100
	 int scale = intent.getIntExtra( "scale", 100 );  
	//当前电池运行状况,要跟BatteryManager里面的属性进行比较
 	 int health = intent.getIntExtra( "health", BatteryManager.BATTERY_HEALTH_UNKNOWN );
	//电池技术(Li电池?还是其他)
   	 String tStr = intent.getStringExtra( "technology" );
	//电压
	int voltage = intent.getIntExtra( "voltage", 0 )
	//温度
	int temperature = intent.getIntExtra( "temperature", 0 )
         }
}

 

SD 卡技术验证

 

1、在模拟器下测试,需要准备:

 

建立SD卡: mksdcard 100M D:\sdcard.img

 

将sd卡放入模拟器中: emulator --avd (设备名称) --sdcard D:\sdcard.img

 

将数据放入sd卡中:adb push E:/music/a.mp3 sdcard

 

2、SD卡容量

 

 public static ArrayList<String[]> getSdInfo(Context ctx) {
      ArrayList<String[]> data = new ArrayList<String[]>();
      //linux把设备当作文件处理,从系统中获取SD设备
     File path = Environment.getExternalStorageDirectory();
     //新建一个stat,它可以查看路径上面的系统文件
     StatFs stat = new StatFs(path.getPath());
     //一个块的 有多少字节
     long blockSize = stat.getBlockSize();
     //设备上有多少个空闲的块
     long availableBlock = stat.getAvailableBlocks();
     //设备上所有的块
     long availableBlocks = stat.getBlockCount();
     Log.v("blockSize", String.valueOf(blockSize));
     Log.v("tag", String.valueOf(availableBlocks));
     //换算成字节
     long availablePlace = availableBlock * blockSize;
     long placeCount = availableBlocks * blockSize;
     //换算成GB 或 MB单位
       data.add(new String[] {
                  ctx.getString(R.string.total), formatSize(placeCount, ctx)
          });
       data.add(new String[] {
         ctx.getString(R.string.free), formatSize(availablePlace, ctx)
       });
     return data;
 }

 

问题:新建100MB的SD卡容量,total显示只有98.43MB,剩下1.57MB哪里去了?被inode 占用( 待考证 ???(见SD卡参考资料)

 

系统文件技术验证(root文件夹)

 public static ArrayList<String[]> getSysMemoInfo(Context ctx) {
     
     ArrayList<String[]> data = new ArrayList<String[]>();
     //获取root文件夹下面目录(系统文件夹)
     File path = Environment.getRootDirectory();
  if ( path != null )
  {
   try
   {
    StatFs stat = new StatFs( path.getAbsolutePath( ) );
    long blockSize = stat.getBlockSize( );
    data.add(new String[] {
                    ctx.getString(R.string.total), formatSize( stat.getBlockCount( )
          * blockSize, ctx)
            });
    data.add(new String[] {
      ctx.getString(R.string.free), formatSize( stat.getAvailableBlocks( ) * blockSize, ctx)
    });
    return data;
   }
   catch ( Exception e )
   {
    Log.e( Util.class.getName( ), "Cannot access path: " //$NON-NLS-1$
      + path.getAbsolutePath( ), e );
   }
  }
  return data;
 }

 

参考: http://www.cnblogs.com/crazypebble/archive/2011/04/09/2010196.html

 

 

 

 

 

PS:附上SD卡资料(http://arlen.opcom.blog.163.com/blog/static/33775037201112221933170 )

1、无论我们愿意不愿意,SD卡每次读写数据的最小单位是1个扇区,即512个字节。

2、SD卡允许以块数据进行读取,有的可以用CMD16命令设定每读取的块为512字节

3、SD卡分成:Parition Area 和 Regualr Area,其中Partion Area是存放MBR和PT,Regualr Area包含了System Area 和 User Area。

分享到:
评论

相关推荐

    Android学习笔记.doc

    本文档是一份深入浅出的Android学习笔记,旨在帮助初学者快速搭建开发环境,理解和掌握Android应用的基本构建过程。下面将详细阐述Android开发的基础知识。 一、平台搭建(以Windows环境为例) 1. Java SDK:Java ...

    android详细笔记

    Android是谷歌公司开发的一款开源移动操作系统,广泛应用于智能手机、平板电脑和智能电视等设备。这份“Android详细笔记”涵盖了从基础到进阶的各种知识点,旨在帮助读者深入理解Android开发技术。 一、Android系统...

    Android笔记.zip

    这份"Android笔记.zip"的压缩包很可能包含了一份详尽的Android开发者的学习指南。以下是一些关键的Android知识点的深入解析: 1. **Android架构**:Android系统基于Linux内核,分为应用程序层、应用程序框架层、...

    Android开发教程以及笔记

    这篇教程和笔记涵盖了Android开发的基础知识,旨在为初学者提供一个良好的起点。以下是对这些主题的详细解析: 一、Android概述 Android是一种开源的操作系统,主要应用于移动设备,如智能手机和平板电脑。它由...

    Android 学习实例备份,添加收集的文档和笔记.

    "Android学习实例备份"这个压缩包文件很可能包含了开发者在探索Android平台时积累的各种代码示例、文档和笔记,这些都是深化理解Android开发的重要资源。下面,我们将深入探讨这些可能包含的知识点,并提供一些学习...

    Android笔记

    例如,当系统状态改变(如电池电量低)或接收到自定义广播时,广播接收者会接收到通知并作出响应。创建广播接收者需要在AndroidManifest.xml中注册,或者在运行时动态注册。理解如何正确使用IntentFilter来过滤接收...

    新版Android开发教程;笔记--基础入门二

    最后,学习如何使用Android Studio的调试工具进行问题定位,以及如何通过内存分析、性能监控和代码优化提升应用性能。 通过以上这些基础知识的学习,你将具备开发简单Android应用的能力。然而,Android开发是一个...

    android源码开发实战11.11.zip

    在Android源码开发实战中,11.11章节可能涉及了Android系统深层次的理解和定制。这个压缩包可能包含了一系列的教程、代码示例或...文件列表中的"11.11"可能代表一系列的课件、代码示例或者笔记,用于辅助学习和实践。

    嵌入式linux入门笔记

    4. **Bootloader**:Bootloader是启动嵌入式系统的第一个软件,负责加载操作系统到内存中。常见的Bootloader有U-Boot和LiBRE。 5. **文件系统**:嵌入式Linux系统也需要文件系统来组织和管理数据。常见的文件系统...

    黑马安卓核心基础笔记

    《黑马安卓核心基础笔记》是一份全面且深入的Android学习资料,旨在帮助初学者和有经验的开发者巩固和提升在Android开发领域的技能。这份笔记包含了丰富的理论知识和实践代码,是自学者的理想资源。 Android是一种...

    嵌入式系统设计(pda)掌上电脑

    嵌入式系统设计是计算机科学和技术领域中的一个重要分支,它涉及到在特定应用中集成硬件和软件的复杂系统。PDA,即个人数字助手,是一种典型的嵌入式系统应用,主要用于个人信息管理和通信。在这个主题中,我们将...

    android源码开发实战9.04.zip

    这个压缩包很可能包含了一系列章节、笔记或者项目文件,以9.04作为主要的学习内容。下面将详细讨论Android源码开发的相关知识点。 1. **Android系统架构**:Android是一个分层的系统,由Linux内核、硬件抽象层(HAL...

    android阅读器v0.09

    1. **平台适应性**:作为一款Android应用,它必须考虑到各种设备的兼容性,包括不同的屏幕尺寸、分辨率以及操作系统版本。这通常涉及到布局的响应式设计和性能优化,以确保在各种设备上都能流畅运行。 2. **文本...

    Android随手记

    【Android随手记】是一款专为Android平台设计的创新性移动笔记应用,旨在提供高效、便捷的笔记记录体验,尤其适合现代学习者的需求。这款应用程序充分利用了Android系统的特性,结合先进的技术,让用户能够在任何...

    基于Android平台的手机电子书阅读器设计-毕业论文-定稿

    在本毕业论文“基于Android平台的手机电子书阅读器设计-毕业论文-定稿”中,作者探讨了如何为Android操作系统开发一款功能完善的电子书阅读器应用。这一项目旨在为移动设备用户提供一个方便、易用且功能丰富的阅读...

    Android电子书阅读器.zip

    本文将深入探讨如何开发一款适用于Android系统的电子书阅读器,包括基本架构、关键技术、用户体验优化等方面。 一、项目初始化与环境搭建 开发Android应用首先需要安装Android Studio,它是Google官方提供的集成...

    行业分类-设备装置-一种可拆分式笔记本、平板二合一电脑.zip

    在当前的数字化时代,二合一电脑,也称为2-in-1设备,已经成为移动计算领域的一个重要创新。...通过阅读“一种可拆分式笔记本、平板二合一电脑.pdf”这份文件,我们可以深入学习和了解这类设备的更多细节和技术参数。

    Android电子书阅读器.rar

    分析Android电子书阅读器的源码有助于理解其内部工作原理,学习如何解析不同格式的电子书文件,以及如何构建高效、友好的用户界面。这对于开发者来说是提升技能、借鉴优秀实践的好机会。 总的来说,Android电子书...

    电信设备-一种便携式多功能移动学习机.zip

    5. **操作系统与软件**:描述运行的操作系统(可能是定制版的Android或iOS),以及预装的学习应用和软件,如何帮助用户高效学习。 6. **教育资源**:可能会提到与知名教育平台的合作,以及内置的丰富教育资源,如...

Global site tag (gtag.js) - Google Analytics