当前位置:  编程技术>移动开发
本页文章导读:
    ▪AlarmManager类的应用(实现闹钟效能)        AlarmManager类的应用(实现闹钟功能)   出处:http://blog.csdn.net/jeethongfei/article/details/6767826   1、AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从.........
    ▪ 新浪微博异常代码大全        新浪微博错误代码大全 1、【新浪微博错误代码大全】304 Not Modified: 没有数据返回.400 Bad Request: 请求数据不合法,或者超过请求频率限制. 详细的错误代码如下:o 40028:内部接口错误(如果有.........
    ▪ MMI 跟L4通信【转】       MMI 和L4通信【转】 MMI 和L4通信 博客分类: MTK EXTCC++C#数据结构 1.1.       如何通信 C代码   Send/Receive messages thru the message Queue.   #define OslMsgSendExtQueue  msg_send_ext_queue   #de.........

[1]AlarmManager类的应用(实现闹钟效能)
    来源: 互联网  发布时间: 2014-02-18
AlarmManager类的应用(实现闹钟功能)

 

出处:http://blog.csdn.net/jeethongfei/article/details/6767826

 

1、AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用,实现闹钟等提示功能

 

2、AlarmManager的常用方法有三个:

(1)set(int type,long startTime,PendingIntent pi);

该方法用于设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟执行时间,第三个参数表示闹钟响应动作。

 

(2)setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);

该方法用于设置重复闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟首次执行时间,第三个参数表示闹钟两次执行的间隔时间,第三个参数表示闹钟响应动作。

 

(3)setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);

该方法也用于设置重复闹钟,与第二个方法相似,不过其两个闹钟执行的间隔时间不是固定的而已。

 

3、三个方法各个参数详悉:

 

(1)int type:闹钟的类型,常用的有5个值:AlarmManager.ELAPSED_REALTIME、AlarmManager.ELAPSED_REALTIME_WAKEUP、AlarmManager.RTC、AlarmManager.RTC_WAKEUP、AlarmManager.POWER_OFF_WAKEUP。

 

AlarmManager.ELAPSED_REALTIME表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3;

 

AlarmManager.ELAPSED_REALTIME_WAKEUP表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间,状态值为2;

 

AlarmManager.RTC表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1;

 

AlarmManager.RTC_WAKEUP表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;

 

AlarmManager.POWER_OFF_WAKEUP表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间,状态值为4;不过本状态好像受SDK版本影响,某些版本并不支持;

 

 

(2)long startTime:闹钟的第一次执行时间,以毫秒为单位,可以自定义时间,不过一般使用当前时间。需要注意的是,本属性与第一个属性(type)密切相关,如果第一个参数对应的闹钟使用的是相对时间(ELAPSED_REALTIME和ELAPSED_REALTIME_WAKEUP),那么本属性就得使用相对时间(相对于系统启动时间来说),比如当前时间就表示为:SystemClock.elapsedRealtime();如果第一个参数对应的闹钟使用的是绝对时间(RTC、RTC_WAKEUP、POWER_OFF_WAKEUP),那么本属性就得使用绝对时间,比如当前时间就表示为:System.currentTimeMillis()。

 

 

(3)long intervalTime:对于后两个方法来说,存在本属性,表示两次闹钟执行的间隔时间,也是以毫秒为单位。

 

 

(4)PendingIntent pi:是闹钟的执行动作,比如发送一个广播、给出提示等等。PendingIntent是Intent的封装类。需要注意的是,如果是通过启动服务来实现闹钟提示的话,PendingIntent对象的获取就应该采用Pending.getService(Context c,int i,Intent intent,int j)方法;如果是通过广播来实现闹钟提示的话,PendingIntent对象的获取就应该采用PendingIntent.getBroadcast(Context c,int i,Intent intent,int j)方法;如果是采用Activity的方式来实现闹钟提示的话,PendingIntent对象的获取就应该采用PendingIntent.getActivity(Context c,int i,Intent intent,int j)方法。如果这三种方法错用了的话,虽然不会报错,但是看不到闹钟提示效果。

 

4、 AlarmManager使用示例:利用用户自定义广播实现闹钟功能,从当前时间开始,每隔10分钟提示一次

(1)实现原理:在SendActivity.java中定义一个AlarmManager对象,指定该对象从当前时间开始,每隔10分钟向名为“MYALARMRECEIVER”的广播接收器发出一条广播,附加消息内容为“你该打酱油了”;创建一个名为MyReceiver的广播接收器,在其onReceive方法中获取Intent对象传过来的值(“你该打酱油了”)并用一个Toast组件显示出来;在AndroidManifest.xml文件中注册SendActivity类和广播接收器类MyReceiver,设置MyReceiver的action的值为“MYALARMRECEIVER”

 

(2)代码实现:

第一步:创建广播接收类MyReceiver.java,在其onReceive方法中获取Intent的附加信息msg,并用Toast组件显示

[java] view plaincopy
  • public void onReceive(Context context,Intent intent){  
  •      String msg = intent.getStringExtra("msg");  
  •      Toast.makeText(context,msg,Toast.LENGTH_SHORT).show();  
  • }  
  •  

     

    第二步:在AndroidManifest.xml中注册广播接收类MyReceiver.java,设置其action值为“MYALARMRECEIVER”

    [java] view plaincopy
  • <receiver android:name=".MyReceiver">  
  •    <intent-filter>  
  •       <action android:name="MYALARMRECEIVER" />  
  •    </intent-filter>  
  • </receiver>  
  •  

     

    第三步:创建SendActivity.java,用于设置闹钟,定时发出广播

    [java] view plaincopy
  • //创建Intent对象,action指向广播接收类,附加信息为字符串“你该打酱油了”  
  •   
  • Intent intent = new Intent("MYALARMRECEIVER");  
  •   
  • intent.putExtra("msg","你该打酱油了");  
  •   
  • //创建PendingIntent对象封装Intent,由于是使用广播,注意使用getBroadcast方法  
  •   
  • PendingIntent pi = PendingIntent.getBroadcast(this,0,intent,0);  
  •   
  • //获取AlarmManager对象  
  •   
  • AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);  
  •   
  • //设置闹钟从当前时间开始,每隔10分钟执行一次PendingIntent对象,注意第一个参数与第二个参数的关系  
  •   
  • am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentMillis(),600*1000,pi);  
  •  

     

    第四步:在AndroidManifest中为SendActivity.java注册

    [java] view plaincopy
  • <activity android:name=".SendActivity" />  


  •     
    [2] 新浪微博异常代码大全
        来源: 互联网  发布时间: 2014-02-18
    新浪微博错误代码大全


    1、【新浪微博错误代码大全】
    304 Not Modified: 没有数据返回.
    400 Bad Request: 请求数据不合法,或者超过请求频率限制. 详细的错误代码如下:
    o 40028:内部接口错误(如果有详细的错误信息,会给出更为详细的错误提示)
    o 40033:source_user或者target_user用户不存在
    o 40031:调用的微博不存在
    o 40036:调用的微博不是当前用户发布的微博
    o 40034:不能转发自己的微博
    o 40038:不合法的微博
    o 40037:不合法的评论
    o 40015:该条评论不是当前登录用户发布的评论
    o 40017:不能给不是你粉丝的人发私信
    o 40019:不合法的私信
    o 40021:不是属于你的私信
    o 40022:source参数(appkey)缺失
    o 40007:格式不支持,仅仅支持XML或JSON格式
    o 40009:图片错误,请确保使用multipart上传了图片
    o 40011:私信发布超过上限
    o 40012:内容为空
    o 40016:微博id为空
    o 40018:ids参数为空
    o 40020:评论ID为空
    o 40023:用户不存在
    o 40024:ids过多,请参考API文档
    o 40025:不能发布相同的微博
    o 40026:请传递正确的目标用户uid或者screen name
    o 40045:不支持的图片类型,支持的图片类型有JPG,GIF,PNG
    o 40008:图片大小错误,上传的图片大小上限为5M
    o 40001:参数错误,请参考API文档
    o 40002:不是对象所属者,没有操作权限
    o 40010:私信不存在
    o 40013:微博太长,请确认不超过140个字符
    o 40039:地理信息输入错误
    o 40040:IP限制,不能请求该资源
    o 40041:uid参数为空
    o 40042:token参数为空
    o 40043:domain参数错误
    o 40044:appkey参数缺失
    o 40029:verifier错误
    o 40027:标签参数为空
    o 40032:列表名太长,请确保输入的文本不超过10个字符
    o 40030:列表描述太长,请确保输入的文本不超过70个字符
    o 40035:列表不存在
    o 40053:权限不足,只有创建者有相关权限
    o 40054:参数错误,请参考API文档
    o 40059: 插入失败,记录已存在
    o 40060:数据库错误,请联系系统管理员
    o 40061:列表名冲突
    o 40062:id列表太长了
    o 40063:urls是空的
    o 40064:urls太多了
    o 40065:ip是空值
    o 40066:url是空值
    o 40067:trend_name是空值
    o 40068:trend_id是空值
    o 40069:userid是空值
    o 40070:第三方应用访问api接口权限受限制
    o 40071:关系错误,user_id必须是你关注的用户
    o 40072:授权关系已经被删除
    o 40073:目前不支持私有分组
    o 40074:创建list失败
    o 40075:需要系统管理员的权限
    o 40076:含有非法词
    o 40084:提醒失败,需要权限
    o 40082:无效分类!
    o 40083:无效状态码
    o 40084:目前只支持私有分组
    401 Not Authorized: 没有进行身份验证.
    o 40101 version_rejected Oauth版本号错误
    o 40102 parameter_absent Oauth缺少必要的参数
    o 40103 parameter_rejected Oauth参数被拒绝
    o 40104 timestamp_refused Oauth时间戳不正确
    o 40105 nonce_used Oauth nonce参数已经被使用
    o 40106 signature_method_rejected Oauth签名算法不支持
    o 40107 signature_invalid Oauth签名值不合法
    o 40108 consumer_key_unknown! Oauth consumer_key不存在
    o 40109 consumer_key_refused! Oauth consumer_key不合法
    o 40110 token_used! Oauth Token已经被使用
    o 40111 Oauth Error: token_expired! Oauth Token已经过期
    o 40112 token_revoked! Oauth Token不合法
    o 40113 token_rejected! Oauth Token不合法
    o 40114 verifier_fail! Oauth Pin码认证失败
    402 Not Start mblog: 没有开通微博
    403 Forbidden: 没有权限访问对应的资源.
    o 40301 too many lists, see doc for more info 已拥有列表上限
    o 40302 auth faild 认证失败
    o 40303 already followed 已经关注此用户
    o 40304 Social graph updates out of rate limit 发布微博超过上限
    o 40305 update comment out of rate 发布评论超过上限
    o 40306 Username and pwd auth out of rate limit 用户名密码认证超过请求限制
    o 40307 HTTP METHOD is not suported for this request 请求的HTTP METHOD不支持
    o 40308 Update weibo out of rate limit 发布微博超过上限
    o 40309 password error 密码不正确
    o 40314 permission denied! Need a high level appkey 该资源需要appkey拥有更高级的授权
    404 Not Found: 请求的资源不存在.
    500 Internal Server Error: 服务器内部错误.
    502 Bad Gateway: 微博接口API关闭或正在升级 .
    503 Service Unavailable: 服务端资源不可用.

    2、【人人网分享错误代码大全】
    <1> 一个未知的错误发生
    <2> 服务临时不可用
    <3> 未知的方法
    <4> 应用已达到设定的请求上限
    <5> 请求来自未经授权的IP地址
    <6> 当前用户session key过期了(已过期)
    <7> rest api调用次数超过了限制
    <100> 无效未知参数
    <101> 无效的API_KEY
    <102> 无效的SESSION_KEY
    <103> 必须是POST提交
    <104> 无效的签名
    <200> USER PERMISSIONS ERRORS
    <210> API_EC_PERMISSION_USER
    <220> API_EC_PERMISSION_ALBUM
    <221> <API_EC_PERMISSION_PHOTO>
    <450> 当前用户的sessionKey过期
    <451> Session key specified cannot be used to call this method
    <452> Session key 无效. 可能传入的sessionKey格式出现错误
    <453> 调用此方法时,session key 是一个必须的参数
    <2000> 没有得到auth_token
    <2001> token对象中没有得到userId
    <2002> 用户没有登录校内网
    <10000> 登录失败
    <10201> API_EC_REST_LACKO_API_KEY
    <10202> API_EC_REST_LACKOF_SESSION_KEY
    <10203> API_EC_REST_LACKOF_CALL_ID
    <10600> 此接口的调用规则是: 48小时之内,一个用户最多可以调用10次
    <10601> Feed标题模板是无效的,标题模板中必须含有 \"{actor}\" 变量,且只含有一个
    <10602> 文本空,显示内容应该在30个字符之内
    <10603> if {target} is used, then target_ids becomes a required parameter
    <10604> title_data 参数不是一个有效的JSON 格式数组
    <10605> Feed的标题模板缺少必须的参数,或者title_data JSON数组定义的参数不完全。
    <10606> 只能包含<a>或者<xn:name>标签。
    <10607> 内容部分是可选的,内容部分的最终显示的字符数应该控制在100个以内
    <10608> Feed story photos could not be retrieved, or bad image links were provided
    <10609> title_data 只能包含<a>或者<xn:name>标签。
    <10610> body_data 只能包含<a>或者<xn:name>标签。
    <10611> Applications are limited to calling this function once every 12 hours for each user
    <10612> the membercache Error
    <10613> The word \"message\" is disallowed in a feed story
    <10614> the title is required
    <10615> Feed的标题模板缺少必须的参数,或者title_data JSON数组定义的参数不完全。
    <10616> Feed标题模板中定义的变量和title_data JSON数组中的定义不匹配
    <10617> 没有注册模板
    <10618> url错误
    <10619> body_data 参数不是一个有效的JSON 格式数组
    <10620> body_data 只能包含<a>或者<xn:name>标签。
    <10700> 传入文本信息错误
    <10701> 传入接口者id错误
    <10702> 发送者已超过当天发送配额
    <10703> AppToUser已超过发送配额
    <10704> 通知发送过快
    <10800> 传递订单号已失效,无法获取到token
    <10801> 无效的订单号 (小于零)
    <10802> 消费金额无效:不支持大笔消费金额>100或者小于零
    <10803> 校内网支付平台应用资料审核未通过,没有使用平台的资格
    <10804> 该订单不存在
    <20201> 需要用户授予status_update权限
    <20204> 需要用户授予read_stream权限


        
    [3] MMI 跟L4通信【转】
        来源: 互联网  发布时间: 2014-02-18
    MMI 和L4通信【转】
    MMI 和L4通信
      博客分类:
    • MTK
    EXTCC++C#数据结构

    1.1.       如何通信

    C代码  
  • Send/Receive messages thru the message Queue.  
  • #define OslMsgSendExtQueue  msg_send_ext_queue  
  • #define OslReceiveMsgExtQ    receive_msg_ext_q  
  • SetProtocolEventHandler(FuncCB, msg_id);  

  • 1.2.       通信数据


    C代码  
  • typedef struct ilm_struct {  
  • oslModuleType oslSrcId; // Source module ID.  
  • oslModuleType oslDestId; // Destination module ID.  
  • oslMsgType oslSapId; // service access point.  
  • oslMsgType oslMsgId; // message name ID.  
  • oslParaType *oslDataPtr; //local parameter buffer  
  • oslPeerParaPtr *oslPeerBuffPtr; //peer buffer pointer  
  • } ilm_struct;  

  • 1.3.       如何从MMI Queue中侦听消息

    C代码  
  • OslReadCircularQ(&Message);  
  • OslReceiveMsgExtQ(mmi_qid, &mmi_message);  

  • 1.4.       如何在MMI 队列中写入消息

    当NVRAM接收到其他消息时:
    C代码  
  • OslWriteCircularQ(&ilm_ptr);  

  • 1.5.       如何从L4C接听消息

    注册一个消息回调函数
    SetProtocolEventHandler(FuncCB, msg_id);
    1.6.      如何向L4C 发送消息

    2.        构建一个本地参数指针
    3.        将请求数据填充进本地参数指针中。
    4.        给结构体ilm_struct赋值。
    5.        向L4C发送消息。
    消息信息 = 头信息 + 数据信息
    C代码  
  • Local parameter Header info:  
  •  #define LOCAL_PARA_HDR \  
  • kal_uint8 ref_count; \  
  • kal_uint16 msg_len;  
  • peer buffer parameter Header info :  
  •  #define PEER_BUFF_HDR \  
  • kal_uint16 pdu_len; \  
  • kal_uint8 ref_count; \  
  • kal_uint8 pb_resvered; \  
  • kal_uint16 free_header_space; \  
  • kal_uint16 free_tail_space;  

  • 2.7.  本地参数:(local parameter)

    Header info + Data info:
    例如:
    C代码  
  • typedef struct {  
  • LOCAL_PARA_HDR  
  • kal_uint8 volume_type;  
  • kal_uint8 volume_level;  
  • } mmi_eq_set_volume_req_struct;  

  • 2.8.  如何创建本地参数:(动态分配内存)
    C代码  
  • OslConstructDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);  

  • 2.9.  何时释放本地参数

    当L4接收到消息并处理完成后,会自动释放参数。
    C代码  
  • OslFreeDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);  
  • Peer buffer parameter:  
  • Header info + Data info  
  • Ex: typedef struct {  
  • PEER_BUFF_HDR  
  • void *ptr;  
  • } mmi_example;  

  •     
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3