import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

/**

* @title 外接设备工具类

*/

publicclassDeviceUitl{

/**

* 获取所有的外接设备目录

* @return

*/

publicstaticList<String>getDeviceFiles(){

List<Partitions> partitionList=getPartitions();//获得挂载点列表

List<String>devicePathList=newArrayList<String>();

if(partitionList!=null&&partitionList.size()>0){//有挂载点

FilemountsFile=newFile("/proc/mounts");

if(mountsFile.exists()&&mountsFile.isFile()&&mountsFile.canRead()){

BufferedReaderreader=null;

try {

reader=newBufferedReader(newFileReader(mountsFile));

List<String> devList = new ArrayList<String>();

String tempString = null;

while ((tempString = reader.readLine()) != null) {

if (tempString.startsWith("/dev/block/vold/")) {

devList.add(tempString);

}

}

for (String strs : devList) {

String[] args = strs.split(" ");

if (args!=null && args.length>2) {

if(isThePartitionPath(partitionList,args[0])){

devicePathList.add(args[1]);

}

}

}

reader.close();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e1) {

}

}

}

}

}

returndevicePathList;

}

/**

* 验证该挂载点是否是移动设备

* @param partitionList 移动设备挂载点列表

* @param point 挂载点

* @return

*/

privatestaticbooleanisThePartitionPath(List<Partitions>partitionList,Stringpoint){

booleanisPartition=false;

if(partitionList!=null&&point!=null){

for(Partitionsp:partitionList){

if(point.endsWith(p.getMajor()+":"+p.getMinior())){

isPartition=true;

break;

}

}

}

returnisPartition;

}

/**

* 获取外接设备挂载点

* @return

*/

publicstaticList<Partitions>getPartitions(){

FilepartitonsFile=newFile("/proc/partitions");

List<Partitions>partitionList=newArrayList<Partitions>();

if(partitonsFile.exists()&&partitonsFile.isFile()){

List<String>lineList=newArrayList<String>();

BufferedReaderreader=null;

try {

reader=newBufferedReader(newFileReader(partitonsFile));

String tempString = null;

while ((tempString = reader.readLine()) != null) {

lineList.add(tempString);

// Log.d("--------partitions tempString:"+tempString);

}

reader.close();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

for (String line : lineList) {

String[]strs=line.trim().split(" ");

Partitionspartitions=newPartitions();

for (int i = 0; i < strs.length; i++) {

if (!"".equals(strs[i])) {

try {

if(partitions.getMajor()==null){

partitions.setMajor(Integer.valueOf(strs[i]));

continue;

}

if(partitions.getMinior()==null){

partitions.setMinior(Integer.valueOf(strs[i]));

continue;

}

if(partitions.getBlocks()==null){

partitions.setBlocks(Long.valueOf(strs[i]));

continue;

}

if(partitions.getName()==null){

partitions.setName(strs[i]);

continue;

}

} catch (Exception e) {

//e.printStackTrace();

continue;

}

}

}

//名称不能为空,不能是mtd

if(partitions.getName()!=null&&!partitions.getName().trim().equals("")&&!partitions.getName().startsWith("mtd")){

partitionList.add(partitions);

}

}

}

returnpartitionList;

}

/**

* @title 挂载点

*/

publicstaticclassPartitions{

privateIntegermajor;//父节点

privateIntegerminior;//分区节点

privateLongblocks;//容量

privateStringname;//名称

publicIntegergetMajor(){

returnmajor;

}

publicvoidsetMajor(Integermajor){

this.major=major;

}

publicIntegergetMinior(){

returnminior;

}

publicvoidsetMinior(Integerminior){

this.minior=minior;

}

publicLonggetBlocks(){

returnblocks;

}

publicvoidsetBlocks(Longblocks){

this.blocks=blocks;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name = name;

}

}

}

更多相关文章

  1. mac电脑开发android找不到设备
  2. 通过ijetty获取android设备的截图
  3. Android - 设备的DeviceId
  4. 通过ua检测浏览页面的设备是phone还是tablet
  5. Android之USB Camera摄像头节点后移
  6. 《Android 获取当前app的版本号和版本名称》

随机推荐

  1. 实例:在Android调用WCF服务(wcf restful)
  2. 项目运行报错Error: Static interface me
  3. Android(安卓)调试桥
  4. Android(安卓)EditText光标颜色 与inputT
  5. Android中有关数据库SQLite的介绍
  6. 使用ViewFlipper来组织控件
  7. 在 ubuntu10.04下 载 android源码 步骤
  8. android背景选择器selector用法小结
  9. Android有趣的全透明效果--Activity及Dia
  10. 认识Gradle