如何编写一个Android应用程序来进行sysfs读/写。

时间:2013-07-15 04:20:40

标签: android android-ndk linux-kernel linux-device-driver apk

我想编写一个带有UI按钮读/写功能的Android应用程序 sysfs read sysfs write

我在java.io.RandomAccessFile找到了以下示例代码。

    package com.tutorialspoint;

    import java.io.*;

    public class RandomAccessFileDemo {

       public static void main(String[] args) {
          try {
             // create a new RandomAccessFile with filename test
             RandomAccessFile raf = new RandomAccessFile("c:/test.txt", "rw");

             // write something in the file
             raf.writeUTF("Hello World");

             // set the file pointer at 0 position
             raf.seek(0);

             // read the first byte and print it
             System.out.println("" + raf.read());

             // set the file pointer at 4rth position
             raf.seek(4);

             // read the first byte and print it
             System.out.println("" + raf.read());
          } catch (IOException ex) {
             ex.printStackTrace();
          }

       }
    }

有人可以告诉我如何使用Android sdk构建此代码。

1 个答案:

答案 0 :(得分:5)

首先,确保您拥有该sysfs节点的权限(如果您正在开发用户应用程序,通常不会这样做。)

其次,我会说通常你不必直接从Android app与sysfs节点对话.Below app有Android Framework和HAL级别为你做了所有的抽象。

由于不确定你将要做什么,这里是我从Android LightsService获取的一个例子,它直接与sysfs节点对话,这可能对你有帮助。

216        private static final String FLASHLIGHT_FILE = "/sys/class/leds/spotlight/brightness";
...
236        try {
237                FileOutputStream fos = new FileOutputStream(FLASHLIGHT_FILE);
238                byte[] bytes = new byte[2];
239                bytes[0] = (byte)(on ? '1' : '0');
240                bytes[1] = '\n';
241                fos.write(bytes);
242                fos.close();
243            } catch (Exception e) {
244                // fail silently
245            }
246        }