2017-01-31 1 views
0

Ich habe App erstellt, die erkennt, wenn otg Kabel eingesteckt ist oder wenn es mit Fileobserver aus, aber aus irgendeinem Grund funktioniert es nicht funktioniert !!! Warum App nicht funktioniert?Android File Observer

App-Quellcode:

MainActivity.class

public class MainActivity extends AppCompatActivity 
{ 
    private Process suProcess; 
    private static int conn_length = -1; 
    File directory = new File("/sys/bus/usb/devices"); 
    File[] contents = directory.listFiles(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     getRoot(); 



     FileObserver observer = new FileObserver("/sys/bus/usb/devices") 
     { 
      @Override 
      public void onEvent(int event, String file) 
      { 
       if(contents.length == conn_length){ 
        return; 
       } 
       else{ 
        conn_length = contents.length; 
       } 

       if(conn_length == 0) 
       { 

        Toast.makeText(MainActivity.this,"otg not connected",Toast.LENGTH_SHORT).show(); 
       } 
       else 
       { 
        Toast.makeText(MainActivity.this,"otg connected",Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }; 
     observer.startWatching(); 
    } 

    private void getRoot() 
    { 
     try 
     { 
      suProcess = Runtime.getRuntime().exec("su"); 
     } 
     catch (IOException e) 
     { 

     } 
    } 
} 

Antwort

0

Dateien unter/sys sind keine echten Dateien und inotify, das ist das, was FileObserver verwendet, nicht mit ihnen arbeiten. Wenn Sie verwendet NDK können Sie Umfrage verwenden oder auswählen, um benachrichtigt, wenn Geräte angeschlossen sind.

Auf einer höheren Ebene können Sie einen Rundfunkempfänger verwenden, um Benachrichtigungen von USB-Geräten zu erhalten https://developer.android.com/guide/topics/connectivity/usb/host.html

+0

Ich will nur otg erkennen Kabel nicht Geräte angeschlossen !!!!! – pavlenis1906