定时服务,使用getService()方法时第四个参数使用PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT

public int onStartCommand(Intent intent,int flags,int startId){
    new Thread(new Runnable() {
        @Override
        public void run() {
            Log.d("TAG","Running...");
        }
    }).start();
    AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
    int anMinutes = 20 * 1000;
    long triggerAtTime = SystemClock.elapsedRealtime() + anMinutes;
    Intent intent1 = new Intent(this,LongRunningService.class);
    PendingIntent pendingIntent = PendingIntent.getService(this,0,intent1,PendingIntent.FLAG_IMMUTABLE);
    manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pendingIntent);
    return super.onStartCommand(intent,flags,startId);

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android系统 红外遥控器 irda consumerir API调试 .Linux驱动层: 1.文件复制: 把kernel/drivers/irda文件目录复制到对应平台的/kernel/drivers下面 修改/drivers/的Kconfig 加入 source "drivers/irda/Kconfig" 修改/drivers/的Makefile 加入obj-$(CONFIG_IRDA_DC6008) += irda/ 2.编译kernel。 3. 测试代码: 在终端下先查看是否有/sys/class/sec/sec_ir,然后输入以下命令看是否会发码出来。 echo "37300,11,67,10,28,10,28,10,27,11,27,11,27,11,67,11,67,11,27,11,68,10,27,11,27,11,27,11,67,11,27,11,1731,11,68,10,28,10,27,11,27,11,27,11,67,11,27,11,27,11,67,11,27,11,67,11,67,11,68,10,27,11,68,10,1653 ">/sys/class/sec/sec_ir/ir_send 这会发射出遥控码出来。 在init.rc中增加 chmod 777 /sys/class/sec/sec_ir/ir_send chmod 777 /dev/ircontro Android 层:(添加硬件hal层) 可以通过导入irda中间层来实现第三方软件。 1.增加硬件层接口 在device/mini210/device_base.mk 中增加如下: ===================================================== # Irda PRODUCT_PACKAGES += \ irda.mt6582 ===================================================== 复制 irda.h到hardware/libhardware/include里面 复制 hardware/libhardware/modules/irda目录 到hardware/libhardware/include/modules里面 在 hardware/libhardware/modules/Android.mk里面增加 ===================================================== hardware_modules := irda include $(call all-named-subdir-makefiles,$(hardware_modules)) ===================================================== 2.增加service jni层 硬件架构 把com_android_server_IrdaManagerService.cpp 复制到 framework/base/services/jni/ 里面, 并修改framework/base/services/jni/里面的Android.mk ===================================================== LOCAL_SRC_FILES:= \ com_android_server_IrdaManagerService.cpp ===================================================== 在onload.cpp对应的位置 分别增加: ===================================================== namespace android { int register_android_server_IrdaManagerService(JNIEnv* env); }; extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved) { register_android_server_IrdaManagerService(env); } ===================================================== 3.增加irda service 层 1)在/frameworks/base/core/java/android/app/ ContextImpl.java 进行修改 ===================================================== import android.hardware.IIrdaManager; import android.hardware.IrdaManager; static { registerService(IRDA_SERVICE, new StaticServiceFetcher() { public Object createStaticService() { IBinder b = ServiceManager.getService(IRDA_SERVICE); IIrdaManager service = IIrdaManager.Stub.asInterface(b); return new IrdaManager(service); }}); } 2)在/frameworks/base/core/java/android/content/ Context.java中增加如下 ===================================================== /** * Use with {@link #getSystemService} to retrieve a * Use with {@link #getSystemService} to retrieve a * {@link android.hardware.IrdaManager} for sending IR codes * with the IR emitter * * @see #getSystemService * @see android.hardware.IrdaManager */ public static final String IRDA_SERVICE = "irda"; ===================================================== 3)将/frameworks/base/core/java/android/hardware/ IIrdaManager.aidl IrdaManager.java 四个文件复制到 /frameworks/base/core/java/android/hardware/中 4)在/frameworks/base目录,打开Android.mk文件,修改LOCAL_SRC_FILES变量的值,增加 core/java/android/hardware/IIrdaManager.aidl \ 两个接口文件。 5)在 frameworks/base/api/current.txt中添加: ===================================================== public abstract class Context{ … field public static final java.lang.String IRDA_SERVICE = "irda"; } ===================================================== 6)在 frameworks/base/core/res/AndroidManifest.xml中增加 ===================================================== ===================================================== 7) 8) 9)将/frameworks/base/services/java/com/android/server/中的 IrdaManagerService.java加入到/frameworks/base/services/java/com/android/server/中 10)修改此目录的SystemServer文件,加入以下内容: ===================================================== try { Slog.i(TAG, "IrdaManager Service"); ServiceManager.addService("irda", new IrdaManagerService(context)); } catch (Throwable e) { Slog.e(TAG, "Failure starting Irda Service", e); } 这样就完成了文档的移植。但由于导入了新的API,请先输入指令 make update-api 再输入指令 make 然后生成img烧录系统中,打开logcat 用命令查看service list 是否有irda这个service。 Irda是老的三星遥控器接口,现在很多第三方软件都是用此接口。具体在使用上可能还是会有些问题。 irda接口都没有定义红外学习功能。红外学习功能只能用自己的DecoRemote.apk来测试了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值