为什么我的代码无法用于驱动Android手机的LED?

时间:2012-10-10 15:55:41

标签: android

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根本不闪烁(也没有变成红色)。您可以在互联网上找到类似的代码。我不知道我想念的是什么。有帮助吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我马上注意到了一些问题:

  1. 您必须设置默认情况下未设置的Notification类的某些成员,例如Notification#icon

      

    图标:可绘制的资源ID,用作状态栏中的图标。这是必需的;带有无效图标资源的通知将不会显示。

  2. 我的HTC与许多其他设备一样,不接受自定义LED图案或颜色。它只会使用OS'默认值...

答案 1 :(得分:0)

尝试将颜色更改为0xFFFF0000。它应该是ARGB,根据文档:

  

要关闭LED,请在alpha通道中为0通过0或对于ledOnMS和ledOffMS通过0。