0

当我从通知中调用活动时,我试图让我的屏幕变暗。这是我正在使用的代码:

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);
}
}

这是请求的代码

4

3 回答 3

0

尝试这样的事情 - 设置属性后刷新屏幕。

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

    startActivity(new Intent(this,RefreshScreen.class));

因此,刷新屏幕的一个技巧是启动虚拟活动,而不是在创建该虚拟活动时调用 finish(); 所以亮度的变化才会生效。

于 2012-07-19T18:44:06.407 回答
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" />
于 2012-07-19T18:51:42.957 回答
0

您的代码是 100% 正确的。有两种可能,第一种可能性最大

1)活动没有被取消通知。我相信有一种特殊的方式可以让您从涉及待处理意图的通知中触发。我猜这就是问题所在。只是为了确保在 onCreate 和 onStart 中放置一些断点以查看它是否被调用。或者只是在你的代码附近放一个日志语句,看看它是否被调用。我猜它永远不会被调用。

2)您所做的调整 0.1f 是不可见的变化。

请查看此内容并确保收到通知:

http://www.vogella.com/articles/AndroidNotifications/article.html

我看到的一个区别是 getContextBase() 与 this

如果不是这样,它看起来可能 MainActivity.class 清单声明可能不正确。

于 2012-07-19T18:52:32.970 回答