屏幕打开时,Android脉冲LED指示灯通知

时间:2010-10-18 20:46:52

标签: android

如何在应用程序运行且屏幕打开时制作LED或轨迹球脉冲或闪光灯?就像收到电话呼叫一样?

由于

3 个答案:

答案 0 :(得分:3)

Android具有硬编码功能,只有在屏幕关闭时LED才会亮起。 这是源NotificationManagerService.java:

// lock on mNotificationList
private void updateLightsLocked(){
   ...    
   // Don't flash while we are in a call or screen is on
   if(mLedNotification == null || mInCall || mScreenOn){
      mNotificationLight.turnOff();
   }else{
      ...
   }
}

这是功能。不相关的部分被赋予......而实际的行为是评论和可见代码。

我们无法改变这一点。但是,我们对LED通知的调试和测试非常了解。

答案 1 :(得分:0)

我前一段时间写过这个课程,但是我无法使它工作(甚至使用不同的标志组合)你可以找到this post有用。

public class NotificationUtils {
    public static void showStatusbarNotification(Context context, CharSequence text) {
        NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

        Notification notification = new Notification(R.drawable.icon, text, System.currentTimeMillis());
        notification.ledARGB = Color.BLUE;
        notification.ledOnMS = 100;
        notification.ledOffMS = 100; 
        notification.defaults |= Notification.DEFAULT_LIGHTS;
        notification.flags = notification.flags |
            Notification.DEFAULT_LIGHTS | 
            Notification.FLAG_ONLY_ALERT_ONCE | 
            Notification.FLAG_SHOW_LIGHTS;

        CharSequence contentTitle = context.getText(R.string.app_name);
        CharSequence contentText = text;

        Intent notificationIntent = new Intent(context, MyActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
        nm.notify(0, notification);
    }
}

答案 2 :(得分:0)

我过去曾经看过这个问题,似乎Android代码是硬编码的,当屏幕显示开发人员提出的标准通知时会关闭led。

我会再次尝试在android中找到代码。