Android 应用程序要经常访问底层设备,访问设备就要用到设备文件描述符,在应用 open ()函数打开设备前,需要先找到设备的路径,因此我们需要通过 JDK 中各种访问文件的方法来查找到设备的路径。这里以串口设备的查找为例,分析一下 Android 应用程序查找设备路径的过程:

1. 查找设备驱动

这是查找串口驱动的源码程序:

private Vector mDrivers = null ;

Vector getDrivers() throws IOException {

if ( mDrivers == null ) {

mDrivers = new Vector();

LineNumberReader r = new LineNumberReader(new FileReader("/proc/tty/drivers"));

String l;

while ((l = r.readLine()) != null ) {

String[] w = l.split( " +" );

if ((w. length == 5) && (w[4].equals( "serial" ))) {

Log.d( TAG , "Found new driver: " + w[1]);

mDrivers .add( new Driver(w[0], w[1]));

}

}

r.close();

}

return mDrivers ;

}

该步骤先创建一个新的行号阅读器 LineNumberReader ,读取 /proc/tty/drivers 文件,我在开发板上摘取 /proc/tty/drivers 的文件内容如下:

# cat drivers

/dev/tty          /dev/tty         5    0     system:/dev/tty

/dev/console   /dev/console   5   1    system:console

/dev/ptmx      /dev/ptmx       5    2    system

/dev/vc/0      /dev/vc/0         4    0    system:vtmaster

sdio_uart        /dev/ttySDIO   250  0-7   serial

usbserial        /dev/ttyUSB    188   0-253    serial

ttySAC      /dev/s3c2410_serial  204   64-67   serial

serial         /dev/ttyS          4    64-67      serial

pty_slave     /dev/pts      136    0-1048575    pty:slave

pty_master   /dev/ptm    128    0-1048575    pty:master

pty_slave     /dev/ttyp     3       0-255       pty:slave

pty_master  /dev/pty       2       0-255       pty:master

unknown      /dev/tty       4       1-63         console

然后,逐行读取,取出满足条件的行,添加到驱动队列中。

2. 查找设备

这是查找串口设备的源码程序:

Vector mDevices = null ;

public Vector getDevices() {

if ( mDevices == null ) {

mDevices = new Vector();

File dev = new File( "/dev" );

File[] files = dev.listFiles();

int i;

for (i=0; i

if ( files[i].getAbsolutePath().startsWith(mDeviceRoot) ) {

Log.d( TAG , "Found new device: " + files[i]);

mDevices .add(files[i]);

}

}

}

return mDevices ;

}

在找到驱动后,就要查找符合驱动的设备,本段程序实现在 "/dev" 文件下查找串口驱动的设备,这里 mDeviceRoot 是 /dev/ttySDIO 、 /dev/ttyUSB 、 /dev/s3c2410_serial 和 /dev/ttyS 。

下面是开发板上的 "/dev" 文件部分内容:

# cd /dev

# ls

:

s3c-pp

s3c-rotator

s3c2410_serial0

s3c2410_serial1

s3c2410_serial2

s3c2410_serial3

snd

socket

:

ttyS0

ttyS1

ttyS2

ttyS3

:

通过这个方法的实现,便可以查找到串口设备的路径。

更多相关文章

  1. Android编译系统中头文件搜索路径顺序的一个问题
  2. Android中 将布局文件/View显示至手机屏幕的 整个过程分析
  3. Android设备一对多录屏直播--(UDP组播连接,Tcp传输)
  4. 电脑控制Android设备的软件——Total Control
  5. Android res/raw文件以及raw与res/assets异同
  6. Windows环境下编译Assimp库生成Android可用的.so文件
  7. [eclipse]android开发如何查看源代码文件(android source)
  8. android DDMS 连接真机(己ROOT),用file explore看不到data/data文
  9. Cocos2d-x在win32,android和IOS下的文件读写问题

随机推荐

  1. android按home键不能回到自定义主界面
  2. eclipse配置Android(安卓)sdk 时,网址:htt
  3. Android通过ContentProvider获取通话记录
  4. Android 打开关闭闪光灯(手电筒)
  5. Android:Fragment+ViewPager+FragmentPage
  6. Android学习1:Android开发环境搭建
  7. Android深入浅出学习笔记之进程等级相关
  8. mac react native android
  9. Android SQLite Database
  10. android xml本地数据弹窗多选