2011-10-12 2 views
0

camera.java에서 시스템의 속성을 가져와야합니다. 그러나, 나는 항상 불평 카메라를 컴파일, android.os.SystemProperties를 가져올 수 없습니다 :카메라 앱에서 android.os.SystemProperties를 가져올 수 없습니다.

packages/apps/Camera/src/com/android/camera/Camera.java:53: cannot find symbol 
symbol : class SystemProperties 
location: package android.os 
import android.os.SystemProperties; 

camera.java의 시작 부분에서, 나는 포함 :

그것은 SystemProperties 보인다
import android.os.Message; 
import android.os.MessageQueue; 
import android.os.SystemClock; 
import android.os.SystemProperties; /* (this is in line 53)*/ 

는 안드로이드에없는 .os 패키지,하지만 프레임 워크 소스 코드를 확인했습니다, 실제로 그것입니다.

카메라 앱에서 발생합니다. 이런 방식으로 SystemProperties를 사용하는 패키지/app 디렉토리에서 많은 앱을 발견했습니다. 정말 이상합니다.

+0

참조 : http://stackoverflow.com/q/2641111/648313 – Idolon

답변

1

SystemProperties 클래스가 '숨기기'주석으로 설정되었습니다.
응용 프로그램 계층에서이 클래스를 사용하려면 refelection을 사용해야합니다.

SystemProperties 클래스의 정의는 다음과 같습니다.

package android.os; 
/** 
* Gives access to the system properties store. The system properties 
* store contains a list of string key-value pairs. 
* 
* {@hide} 
*/ 
public class SystemProperties 
+0

감사합니다. 반영 및 SystemProperties 사용법은 무엇입니까? MMS 앱도 가져 오기만하면되지만 괜찮습니다. – pengguang001

+1

그 이유를 찾았습니다! Camera/Android.mk에서 LOCAL_SDK_VERSION : = current를 사용하면 HIDE 인터페이스를 사용할 수 없습니다. 주석이 줄은 컴파일 패스를 만든다. – pengguang001

1

동일한 문제가 발생하여 아래 코드를 사용하고 refelection을 사용하여 문제를 해결하십시오. 그것이 도움이되기를 바랍니다.

//set SystemProperties as you want 
public static void setProperty(String key, String value) {  
     try {  
      Class<?> c = Class.forName("android.os.SystemProperties"); 
      Method set = c.getMethod("set", String.class, String.class); 
      set.invoke(c, key, value); 
     } catch (Exception e) { 
      Log.d(LOGTAG, "setProperty====exception="); 
      e.printStackTrace(); 
     } 
    } 
관련 문제