当我通过通知调用活动时,我正试图让我的屏幕昏暗。这是我正在使用的代码:
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 0.01f;
getWindow().setAttributes(lp);
也许我在这里做错了,如果有的话,有人会告诉我发生了什么,以及为什么它不按照预期的方式工作?!
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class NoteMe extends Activity {
/** Called when the activity is first created. */
NotificationManager nm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String title = "Example text";
String contentText = "Full hello world!";
String text = "Starting Notification!";
nm = (NotificationManager) this
.getSystemService(Context.NOTIFICATION_SERVICE);
long when = System.currentTimeMillis();
int icon = R.drawable.ic_launcher;
Intent intent = new Intent(getBaseContext(), MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(
getBaseContext(), 0, intent, 0);
Notification notification = new Notification(icon, text, when);
notification.setLatestEventInfo(getBaseContext(), title, contentText,
contentIntent);
notification.flags = Notification.FLAG_ONGOING_EVENT;
int NOTIFICATION_ID = 10;
nm.notify(NOTIFICATION_ID, notification);
}
}
这是请求的代码
答案 0 :(得分:0)
尝试这样的事情 - 在设置属性后刷新屏幕。
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness =0.01f
getWindow().setAttributes(lp);
startActivity(new Intent(this,RefreshScreen.class));
因此,刷新屏幕的一个方法是启动虚拟活动,而不是在创建虚拟活动时调用finish();所以亮度的变化才能起作用。
答案 1 :(得分:0)
您发布的代码只会使您的应用程序的屏幕变暗。如果这就是你想要的,那很好。但是,如果您想在手机上调暗屏幕,则需要更改系统设置System.SCREEN_BRIGHTNESS
// turn on manual control of system screen brightness
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
final int dimBrightnessValue = 96; // valid values 0-255
// change the brightness value
System.putInt(getContentResolver(), System.SCREEN_BRIGHTNESS, dimBrightnessValue);
您还需要将以下内容添加到AndroidManifest.xml
<!-- Needed for changing screen brightness -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
答案 2 :(得分:0)
您的代码是100%正确的。有两种可能性,第一种是最有可能的
1)活动未被通知取消。我相信有一种特殊的方式可以从涉及待处理意图的通知中解雇。我猜这就是问题所在。只是为了确保在onCreate和onStart中放置一些断点以查看它是否被调用。或者只是在代码附近放一条日志语句,看它是否被调用。我猜它永远不会被召唤。
2)你正在进行0.1f的调整是不可见的。
请查看此内容并确保收到通知:
http://www.vogella.com/articles/AndroidNotifications/article.html
我看到的一个区别是getContextBase()与此
如果它看起来不像MainActivity.class清单声明可能不正确。