当我在Android M Preview 3上有一个23的目标API时,我似乎无法获得Manifest.permission.WRITE_SETTTINGS权限.
requestPermissions(new String[]{Manifest.permission.WRITE_SETTINGS},
101);
Run Code Online (Sandbox Code Playgroud)
请求权限不会显示我期望的对话框,但如果我未经此许可进行以下调用,
RingtoneManager.setActualDefaultRingtoneUri(activity, RingtoneManager.TYPE_RINGTONE, ringUri);
Run Code Online (Sandbox Code Playgroud)
电话会议除外,因为我没有这个权限.
我不知道从哪里开始.23有新的铃声API吗?或者这个权限更改只是让任何非系统应用程序无法更改铃声?
我想在android中以编程方式更改屏幕亮度.目前我使用此代码:
WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)
但是这个示例代码适用于蛋糕,而不是最新版本.我使用的是最新版本的SDK.对于较新的Android版本,首选解决方案是什么?
我正在使用以下设置系统自动亮度模式和级别:
android.provider.Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE, 0);
android.provider.Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, y.brightness1);
Run Code Online (Sandbox Code Playgroud)
我可以打开和关闭自动brighess,并设置不同的级别.设置似乎正确应用 - 我可以进入设置 - >显示 - >亮度,并且无论何时设置我设置实际上是正确显示.但是,实际屏幕不会改变其亮度.如果我只是点击"显示设置"中的滑块,则会应用所有内容.
我提到我正在运行一个主要活动的应用程序,这些设置正在BroadcastReceiver中应用.我确实尝试创建一个虚拟活动并测试那里的东西,但得到了相同的结果.
我已经进行了广泛的搜索,但找不到类似的问题。
我想知道是否有任何方法可以检测移动设备的屏幕亮度何时发生变化。
我已经尝试在应用程序启动时存储旧值并反复检查Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS);用于比较屏幕亮度的初始值和最终值,这不是一个好的方法。
谢谢
编辑:这个问题表明我已经尝试过使用Settings.System.SCREEN_BRIGHTNESS获取当前屏幕值并定期检查屏幕亮度变化的解决方案。我正在寻找一种更有效的方法来进行这样的操作。
我只想设置我的 android 应用程序的亮度,而不是我的手机。如何更改我的 android 应用程序的亮度,使其不影响我的手机亮度?
我正在开发一个以编程方式更改屏幕亮度的Android应用程序.我有一个适用于5.1.1的设置亮度方法,但是当我在6.0上运行应用程序时,它会出错并关闭应用程序.请帮忙.
以下是我的方法:
public void setBrightness(View view,int brightness){
//Just a loop for checking whether the brightness changes
if(brightness <46)
brightness = 255;
else if(brightness >150)
brightness=45;
ContentResolver cResolver = this.getApplicationContext().getContentResolver();
Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
}
public void setDisplay(View view)
{
ContentResolver cResolver = getContentResolver();
Window window = getWindow();
int brightness=0;
try
{ Settings.System.putInt(cResolver,Settings.System.SCREEN_BRIGHTNESS_MODE
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
brightness = Settings.System.getInt(cResolver, Settings.System.SCREEN_BRIGHTNESS);
System.out.println("Current Brightness level " + brightness);
}
catch (Exception e)
{
Log.e("Error", "Cannot access system brightness");
e.printStackTrace();
}
setBrightness(view,brightness);
}
Run Code Online (Sandbox Code Playgroud)