package com.example.phoneled;
import android.os.Bundle;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.view.Menu;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ToggleButton;
public class LedOnOff extends Activity {
ToggleButton tb;
final int ID_LED = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_led_on_off);
tb = (ToggleButton) findViewById(R.id.toggleButton1);
tb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification();
notification.ledARGB = 0xFF0000; // 0xFF0000 red,0x00FF00 green
notification.ledOnMS = 100;
notification.ledOffMS = 200;
notification.flags = Notification.FLAG_SHOW_LIGHTS;
nm.notify(ID_LED, notification);
// nm.cancel(ID_LED);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_led_on_off, menu);
return true;
}
}
以上代码用于驱动我的Android手机的LED:HTC Sensation XE G18。但它不起作用。没有给出错误或警告,但真正的LED根本不闪烁(也没有变成红色)。您可以在互联网上找到类似的代码。我不知道我想念的是什么。有帮助吗?谢谢!
答案 0 :(得分:2)
我马上注意到了一些问题:
您必须设置默认情况下未设置的Notification类的某些成员,例如Notification#icon
:
图标:可绘制的资源ID,用作状态栏中的图标。这是必需的;带有无效图标资源的通知将不会显示。
我的HTC与许多其他设备一样,不接受自定义LED图案或颜色。它只会使用OS'默认值...
答案 1 :(得分:0)
尝试将颜色更改为0xFFFF0000
。它应该是ARGB,根据文档:
要关闭LED,请在alpha通道中为0通过0或对于ledOnMS和ledOffMS通过0。