2015-01-26 2 views
8

터미널에 'adb shell getprop'을 사용합니다. Android Java에서 동일한 정보를 얻기 위해 사용할 수있는 인터페이스는 무엇입니까?Java로 Android 속성을 읽는 법

내가 좋아하는 몇 가지 시도 :

Properties sysProps = System.getProperties(); 

을하지만 나는이 내가 찾고 있어요 동일한 속성 생각하지 않는다? 특히, 나는 다음과 같은 반환 값을 찾으려면 :

adb shell getprop | grep dolby 

쉘 '그렙 돌비'명령 반환이 :

[audio.dolby.ds2.enabled]: [true] 
[dolby.audio.sink.info]: [headset] 
[dolby.ds.dialogenhancer.state]: [on] 
[dolby.ds.graphiceq.state]: [off] 
[dolby.ds.hpvirtualizer.state]: [off] 
[dolby.ds.intelligenteq.preset]: [Off] 
[dolby.ds.intelligenteq.state]: [off] 
[dolby.ds.platform]: [qcom] 
[dolby.ds.profile.name]: [Movie] 
[dolby.ds.spkvirtualizer.state]: [off] 
[dolby.ds.state]: [off] 
[dolby.ds.volumeleveler.state]: [on] 

하지만 안드로이드 자바 코드에서이 정보에 액세스 할 .

아이디어가 있으십니까?

+0

이 클래스에 액세스해야합니다. https://android.googlesource.com/platform/frameworks/base.git/+/android-cts-4.2_r1/core/java/android/os/SystemProperties.java – njzk2

답변

2

은 getprop과 동일한 속성을 반환합니다.

getprop 속성을 얻으려면 Runtime.exec()을 사용하여 getprop을 실행하고 표준 출력을 읽으십시오. 누군가가 조지의 도움으로 내 솔루션을 ... 알고 싶은 경우

+0

나는 반복하는 방법을 알고있다. 기본적으로 장치에 dolby 정보 (사용 가능한 경우)가 들어있는 속성을 찾고 있습니다. 내가 볼 수있는 것은 System.getProperties()가 아닙니다. – TMont

+0

알았어요. 감사! – TMont

4

내가이 사용하여 종료 : 나는 TMont의 솔루션을 정리

private String propReader() { 
     Process process = null; 
     try { 
      process = new ProcessBuilder().command("/system/bin/getprop") 
        .redirectErrorStream(true).start(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     InputStream in = process.getInputStream(); 

     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 

     StringBuilder log = new StringBuilder(); 
     String line; 
     try { 
      while ((line = bufferedReader.readLine()) != null) { 
       if (line.contains("dolby")) 
        log.append(line + "\n"); 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     System.out.println(in); 

     process.destroy(); 
     return log.toString(); 
    } 
+0

"dolby"를 인수로 전달하려면 어떻게 수정 하시겠습니까? (또는 정확한 소품?) – not2qubit

1

을하고 더 일반적인 (propertyName 형식에 대한 추가 매개 변수) 제작 :

import android.util.Log; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class SystemProperties { 

    private static String GETPROP_EXECUTABLE_PATH = "/system/bin/getprop"; 
    private static String TAG = "MyApp"; 

    public static String read(String propName) { 
     Process process = null; 
     BufferedReader bufferedReader = null; 

     try { 
      process = new ProcessBuilder().command(GETPROP_EXECUTABLE_PATH, propName).redirectErrorStream(true).start(); 
      bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
      String line = bufferedReader.readLine(); 
      if (line == null){ 
       line = ""; //prop not set 
      } 
      Log.i(TAG,"read System Property: " + propName + "=" + line); 
      return line; 
     } catch (Exception e) { 
      Log.e(TAG,"Failed to read System Property " + propName,e); 
      return ""; 
     } finally{ 
      if (bufferedReader != null){ 
       try { 
        bufferedReader.close(); 
       } catch (IOException e) {} 
      } 
      if (process != null){ 
       process.destroy(); 
      } 
     } 
    } 
}