在Android中读取/ dev / input / eventX文件并在TextView中显示其内容

时间:2018-03-17 06:54:31

标签: java android file-io runnable

UPDATE3:我正在尝试从/dev/input/eventX文件中读取内容。当我读取此文件的内容时,我在TextView中看到特殊字符。我希望看到二进制(1和0)。不幸的是还有麻烦。任何帮助将非常感谢!

摘要:我正在尝试阅读Android OS 4.4(KitKat)中的/dev/input/event1。然后我想在GUI上的TextView中显示这些数据。

注意:的 我知道我需要获得该文件的权限。虽然我现在还没有在代码中编写它(为简单起见),但我已成功通过终端(chmod 666)获得了该文件的权限。

MainActivity:我调用该函数来读取我的文件,然后在TextView中更新结果。

    public class MainActivity extends AppCompatActivity {
    ...
        protected void onCreate(Bundle savedInstanceState) {
    ...
    runThread();
    }

    private void runThread() {
        new Thread() {
            public void run() {
                while (true) {
                    try {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                getEvent.readEvent();
                                result = getEvent.logGetEventData();                              
                             textView.setText(getString(R.string.result_display, 
                             result));
                            }
                        });
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {                        
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }
}

GetEvent:我获得root权限并在此处阅读我的文件。

public class GetEvent {

    private File file = new File("/dev/input/event1");

    public void readEvent()    {
        {
            try {
                mProcess = Runtime.getRuntime().exec("su");
                fin = new FileInputStream(file);
                fin.read(bytes);
                s = new String(bytes); 
            }              
            catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            catch (IOException ioe) {
                ioe.printStackTrace();
            }

            finally {
                try {
                    if (fin != null) {
                        fin.close();
                    }
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }              
            }
        }
    }

    public String logGetEventData() {
            retour = s;
            return (retour);
    }
}

0 个答案:

没有答案