2012-05-21 2 views
4

Я хочу, чтобы изменить яркость, я могу использовать этот метод:Как изменить яркость экрана в BroadcastReceiver?

public static void SetBright(int brightness, Context context) { 
    if (isAutoBrightness(context)) { 
     stopAutoBrightness(context); 
    } 
    WindowManager.LayoutParams lp = ((Activity) context).getWindow() 
      .getAttributes(); 
    lp.screenBrightness = Float.valueOf(brightness) * (1f/255f); 
    ((Activity) context).getWindow().setAttributes(lp); 
} 

мне нужна активность, чтобы перейти в SetBright(int brightness, Context context);

Но теперь я должен вызвать метод SetBright(int brightness, Context context) в Brocastreceiver. Я могу использовать контекст в методе onReceive (контекст контекста, намерение намерения), но если я уйду из приложения, это не сработает.

Есть ли другой способ, который я могу использовать для изменения яркости вместо использования активности?

+0

привет irain, я просто хочу подтвердить, что вы хотите постоянно изменять яркость системы? –

+0

http://stackoverflow.com/questions/5032588/cant-apply-screen-brightness-settings-programmatically-in-android –

+0

Мне любопытно, что вы пытаетесь сделать с этим. Кажется, круговое движение на первый взгляд. Возможно, будет лучшее решение, можете ли вы объяснить больше? – Phix

ответ

4

начала и установить параметры окна с помощью яркости (от 0 до 1 Диапазон-1 для 255). запустите таймер 50, 100 или 500 мс независимо. после этого завершите работу.

TimerTask finishTask = new TimerTask() { 

     @Override 
     public void run() { 
      BrightActivity.this.finish(); 
      timer.cancel(); 
      if (timer != null) { 
       timer = null; 
      } 
     } 
    }; 
    timer.schedule(finishTask,Constants.BRIGHTNESS_REFRESH_DELAY); 
+0

Невозможно начать работу с широковещательного приемника –

0

если вы хотите сохранить, то попробуйте это после настройки яркости: фиктивную деятельность

public static void saveBrightness(Context context, int brightness) { 
    ContentResolver resolver= context.getContentResolver(); 
    Uri uri = android.provider.Settings.System 
      .getUriFor("screen_brightness"); 
    android.provider.Settings.System.putInt(resolver, "screen_brightness", 
      brightness); 
    resolver.notifyChange(uri, null); 
} 
+0

Спасибо 1-го, что я хочу сделать, так это как изменить яркость телефона в broadcastreceiver, а не в activity.the проблема getWindow() - это метод активности. PS, я знаю, как сохранить яркость, это не проблема. – smileVann

1

В первую очередь я использовал 500 мс для обновления экрана, но в галактике s3 он не работает. но 1000 в порядке. Таким образом, время обновления экрана зависит от устройства.

Смежные вопросы