2013-05-13 2 views
0

간단한 전자 책을 만들고 있지만 일부 활동의 화면 밝기를 내 기본 활동에서 변경하고, 블루투스에서 데이터를 받고 백그라운드에서 계속 실행되는 내용을 변경해야합니다 책이 달릴 때. 제 질문은 MainActivity에서 Page1Activity 또는 그 반대의 함수를 호출하는 방법입니다. 내가 활동 중 하나에이 코드를 넣을 경우다른 활동의 활동 설정을 변경하는 가장 좋은 방법

, 페이지 유일한 것, 나는 활동의 밝기를 변경할 수 있습니다,하지만 난 정말 내가 하나를 사용하는 경우 다른

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
lp.screenBrightness = adjusted; 
getWindow().setAttributes(lp); 

하나에서 해당 호출해야 생성시 변경 사항을 표시하지만 데이터를 수신 할 때마다 페이지를 다시 만들고 싶지는 않습니다.

android.provider.Settings.System.putInt(getContentResolver(), 
     android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, 
     android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); 

android.provider.Settings.System.putInt(getContentResolver(), 
     android.provider.Settings.System.SCREEN_BRIGHTNESS, (int)(255*adjusted)); 

그럼 내가 가져 오거나 getWindow()를 사용하는 활동을 저장할 수있는 방법이 있는지 알고 있어야합니다 경우, 또는 두 활동 사이에 또는 그렇게하는 또 다른 방법이있는 경우 함수를 호출 할 수있는 방법을 존재합니다.

추신 : 볼륨을 변경하는 기능을 알고 있습니다. 주 활동에서이를 사용하면, 전체 시스템의 오디오가 즉시 변경됩니다. 누군가가 그와 같은 밝기로 사용할 기능을 알고 있다면, 내 문제를 해결하는 가장 간단한 방법.

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 
     volAdjusted, AudioManager.FLAG_SHOW_UI); 
+1

다른 Android 구성 요소에서 직접 하나의 '활동'에 액세스하지 마십시오. 다른 하나가 보이면 하나의 '활동'이 존재한다는 보장은 없습니다. 'SharedPreferences'에서 설정을 사용하거나 원하는'Activity'를 시작할 때'Intent' 엑스트라에 값을 전달하면됩니다. – Squonk

+0

SharedPreferences의 변수를 듣기 위해 스레드를 만들어야합니까? –

답변

1

먼저 매니페스트 파일에 권한을 추가하십시오.

<uses-permission android:name="android.permission.WRITE_SETTINGS"/> 

는 그런 다음 코드의 다음 줄을 실행하여 밝기를 변경할 수 있습니다에 의해 제안

+0

제 질문에서 볼 수 있듯이, 그것을 사용했지만, 즉시 변경되지는 않습니다. 변경 사항을 보려면 Activity를 다시 만들어야합니다. –

0

0 ~ 255 사이의 숫자

android.provider.Settings.System.putInt(getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, brightness); 

밝기를INT 값이어야합니다 Squonk, 나는 SharedPreferences을 사용했고 이것으로 내 문제를 해결할 수 있었다 :

MainActivity

SharedPreferences settings = 
     PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putFloat("Brightness", adjusted); 
    editor.commit(); 

다른 모든 활동

도움 나 Squonk에 대한
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    //... 
    SharedPreferences preferences = 
     PreferenceManager.getDefaultSharedPreferences(getBaseContext());   
    preferences.registerOnSharedPreferenceChangeListener(prefListener); 
} 

SharedPreferences.OnSharedPreferenceChangeListener prefListener = 
    new SharedPreferences.OnSharedPreferenceChangeListener() { 
     public void onSharedPreferenceChanged(SharedPreferences prefs,String key) { 
      if (key.equals("Brightness")) { 
       WindowManager.LayoutParams lp = getWindow().getAttributes(); 
       lp.screenBrightness = prefs.getFloat(key, 0.8f); 
       getWindow().setAttributes(lp); 
      } 
     } 
    }; 

감사합니다.

관련 문제