教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

Android原生模块DeskClock分析1(3)

来源:网络收集 时间:2026-07-05
导读: //当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用 System.currentTimeMillis()获得。系统值是1 (0x00000001) 。 p

//当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用 System.currentTimeMillis()获得。系统值是1 (0x00000001) 。

public static final int RTC_WAKEUP

//能唤醒系统,用法同RTC类型,系统值为 0 (0x00000000) 。

Public static final int POWER_OFF_WAKEUP

8

DeskClock分析文档

//能唤醒系统,它是一种关机闹铃,就是说设备在关机状态下也可以唤醒系统,所以我们把它称之为关机闹铃。使用方法同RTC类型,系统值为4(0x00000004)。

? AlarmKlaxon通过继承Service,来实现功能,他在后台运行。

? 闹铃模式:Vibrator(震动)VIBRATOR_SERVICE,TelephonyManager(响铃)

TELEPHONY_SERVICE private void play(Alarm alarm) {

// stop() checks to see if we are already playing. stop();

if (Log.LOGV) {

Log.v(\ }

if (!alarm.silent) {Log.e(\ Uri alert = alarm.alert;

// Fall back on the default alarm if the database does not have an // alarm stored.

if (alert == null) {Log.e(\ alert = RingtoneManager.getDefaultUri( RingtoneManager.TYPE_ALARM); if (Log.LOGV) {Log.e(\

Log.v(\ } }

// TODO: Reuse mMediaPlayer instead of creating a new one and/or use // RingtoneManager.

mMediaPlayer = new MediaPlayer();

mMediaPlayer.setOnErrorListener(new OnErrorListener() { public boolean onError(MediaPlayer mp, int what, int extra) { Log.e(\ mp.stop(); mp.release(); mMediaPlayer = null; Log.e(\ return true; } });

try {

// Check if we are in a call. If we are, use the in-call alarm // resource at a low volume to not disrupt the call.

9

DeskClock分析文档

if (mTelephonyManager.getCallState()

!= TelephonyManager.CALL_STATE_IDLE) {Log.e(\ Log.v(\

mMediaPlayer.setVolume(IN_CALL_VOLUME, IN_CALL_VOLUME); setDataSourceFromResource(getResources(), mMediaPlayer, R.raw.in_call_alarm); } else {Log.e(\

mMediaPlayer.setDataSource(this, alert); }

startAlarm(mMediaPlayer); } catch (Exception ex) {

Log.v(\

// The alert may be on the sd card which could be busy right // now. Use the fallback ringtone. try {

// Must reset the media player to clear the error state. mMediaPlayer.reset();

setDataSourceFromResource(getResources(), mMediaPlayer, R.raw.fallbackring); startAlarm(mMediaPlayer); } catch (Exception ex2) {

// At this point we just don't play anything. Log.e(\ } } }

/* Start the vibrator after everything is ok with the media player */ if (alarm.vibrate) {Log.e(\ mVibrator.vibrate(sVibratePattern, 0); } else {Log.e(\ mVibrator.cancel(); }

enableKiller(alarm); mPlaying = true;

mStartTime = System.currentTimeMillis();

}

? AlarmClock继承Activity实现OnItemClickListener接口

· AlarmClock是一个Activity类,主要功能是将闹钟界面显示出来,并通过各种组件控件,

实现人机交互功能,其中包括listView,adapter,menu,cursor等组件。

· 这里定义一个AlarmTimeAdapter继承CursorAdapter,用来显示闹钟列表的适配器。这里

10

…… 此处隐藏:522字,全部文档内容请下载后查看。喜欢就下载吧 ……
Android原生模块DeskClock分析1(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/520580.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)