【问题标题】:changing brightness from Service android从Service android改变亮度
【发布时间】:2012-07-03 07:07:35
【问题描述】:

我想通过服务更改安卓设备的亮度。我已经看到很多关于堆栈溢出的问题,但没有一个能解决我的问题。

我已经完成了从在 settingsManger 中设置亮度、开始新活动等的所有事情 但它们都不适合我。

【问题讨论】:

    标签: android android-screen


    【解决方案1】:

    试一试

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

    并在 Manifest.xml 中添加权限

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

    编辑: 试试看:

    public class ExampleService extends Service {
    
        @Override
        public void onCreate() {
            // The service is being created
            // set SCREEN_BRIGHTNESS
            android.provider.Settings.System.putInt(getContentResolver(),
            android.provider.Settings.System.SCREEN_BRIGHTNESS,
            BRIGHTNESS_Value);
            /// start new Activity
            Intent intent = new Intent(getBaseContext(), ExampleActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            getApplication().startActivity(intent);
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            // A client is binding to the service with bindService()
            return mBinder;
        }
    }
    
    public class ExampleActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // The activity is being created.
    
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            // The activity has become visible (it is now "resumed").
            this.finish();
        }
      }
    

    【讨论】:

    • 我已经做到了,问题是只有在我启动任何其他事情时才会应用更改,例如启动通知管理器。它不会自动应用。
    • 添加.CHANGE_CONFIGURATION权限后试试
    【解决方案2】:

    找到答案: 创建一个不可见的活动,并且不要完成()它。 在活动中进行所有更改

    虚拟活动代码:

    public class DummyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dummy_layout);
        int progress = getIntent().getIntExtra("brightness", 0);
        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
        layoutParams.screenBrightness = progress/255.0f;
        getWindow().setAttributes(layoutParams);
    
    
        Toast.makeText(this, "Came in Dummy Activity", Toast.LENGTH_SHORT).show();
    }
    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }
    

    }

    【讨论】:

    • 那么用户如何点击其他应用和主屏幕??
    • 我只是在做一个数据收集应用。现在我不关心这个。但是,如果有人想将此功能包含在完整的应用程序中,您的观点非常重要
    【解决方案3】:

    即使你在祝酒后调用完成,它也有效。我试过了。

    实际上,即使您不调用虚拟活动,它也可以工作。只是您不会看到显示亮度发生变化(可见),即使它在设置中正确地设置了亮度值。

    如果您在应用程序在后台运行时进入设置>显示>亮度,则显示亮度的变化是可见的。

    不知道为什么会这样。

    【讨论】:

      【解决方案4】:

      我想要和你一样...

      我也没有找到,最后只好实现了……

      Change brightness according to surrounding light in android

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多