android 闹铃 格式,android闹铃简单实现
1.闹铃activity
package com.example.myalarm;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Intent;
import android.database.Cursor;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;
public class AlarmActivity extends Activity {
private static final String TAG = "AlarmActivity";
AlarmManager alarmManager;
Calendar calendar = Calendar.getInstance(Locale.CHINESE);
Button setTime;
Button setRing;
Button setOver;
Uri ringUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
setTime = (Button) findViewById(R.id.setTime);
setRing = (Button) findViewById(R.id.setRing);
setOver = (Button) findViewById(R.id.setOver);
//setTime();
//setRingtone();
setTimeAndRing();
}
private void setTimeAndRing(){
setTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
setTime();
}
});
setRing.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
setRingtone();
}
});
setOver.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
setAlarm(calendar);
}
});
}
//启动闹玲,设置闹玲
private void setAlarm(Calendar calendar){
Intent intent = new Intent();
intent.setClass(this, AlarmBroadcastReceiver.class);
intent.putExtra("msg", "Get up!Get up!");
intent.putExtra("ringURI", ringUri.toString());
Log.d(TAG, ringUri.toString());
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), pendingIntent);
}
//设置时间
private void setTime(){
Date date = new Date();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
new TimePickerDialog(this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hour, int minute) {
calendar.set(Calendar.HOUR,hour);
calendar.set(Calendar.MINUTE,minute);
}
}, hour, minute, true).show();
}
//设置闹玲铃声
private void setRingtone(){
Intent intent = new Intent();
intent.setAction(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置闹玲铃声");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
Uri pickedUri = RingtoneManager.getActualDefaultRingtoneUri(this,RingtoneManager.TYPE_ALARM);
if (pickedUri!=null) {
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,pickedUri);
ringUri = pickedUri;
}
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode!=RESULT_OK) {
return;
}
switch (requestCode) {
case 1:
//获取选中的铃声的URI
Uri pickedURI = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
Log.i(TAG,pickedURI.toString());
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, pickedURI);
getName(RingtoneManager.TYPE_ALARM);
break;
default:
break;
}
}
private void getName(int type){
Uri pickedUri = RingtoneManager.getActualDefaultRingtoneUri(this, type);
Log.i(TAG,pickedUri.toString());
Cursor cursor = this.getContentResolver().query(pickedUri, new String[]{MediaStore.Audio.Media.TITLE}, null, null, null);
if (cursor!=null) {
if (cursor.moveToFirst()) {
String ring_name = cursor.getString(0);
Log.i(TAG,ring_name);
String[] c = cursor.getColumnNames();
for (String string : c) {
Log.i(TAG,string);
}
}
cursor.close();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.alarm, menu);
return true;
}
}
2,布局文件
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置时间"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/setTime"
android:text="设置铃声"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/setRing"
android:text="设置完成"/>
3.广播接收闹铃信息:
package com.example.myalarm;
import java.io.IOException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.util.Log;
import android.widget.Toast;
public class AlarmBroadcastReceiver extends BroadcastReceiver {
Uri ringUri;
@Override
public void onReceive(Context context, Intent intent) {
String msg = intent.getStringExtra("msg");
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
MediaPlayer mp = new MediaPlayer();
String uri = intent.getStringExtra("ringURI");
if (uri!=null) {
ringUri = Uri.parse(uri);
Log.d("AlarmActivity", ringUri.toString());
}
try {
mp.setDataSource(context, ringUri);
mp.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
}
}
4.在manifest文件中注册广播
以上代码就是实现Android闹钟的全部代码了,希望大家能够喜欢。
android 闹铃 格式,android闹铃简单实现相关推荐
- android开机图片格式,Android平台启动图使用.9.png图片
概述 目前HBuilder|HBuilderX中仅定义几种标准分辨率的启动图配置,而实际上存在很多不同分辨率的手机,导致启动图会进行拉伸或压缩引起变形,Android平台为了解决此问题就出现了可以适配 ...
- android v3签名格式,Android Apk签名修改V1,V2,V3,V4
Unity游戏打出 Android Apk 包,默认签名方式是V1,V2方式的. 但是九游要求只能用V1签名方式.那就对生成的 Andorid Apk包重新签名就OK了. 改签环境 改签 Androi ...
- android车载支持格式,Android车载版来了:车机实现全部功能
汽车厂商沃尔沃和奥迪宣布,将与谷歌合作,开发基于Android的车载信息娱乐系统,并直接集成至车辆. 这一合作的详情将在本周晚些时候的谷歌I/O开发者大会上公布.目前已知,这一合作将独立于谷歌当前专注 ...
- android post json格式,Android中post请求传递json数据给服务端的实例
在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid","clientType": ...
- android 图标的格式,Android Design
图标就是一个表示屏幕内容并为操作.状态和应用提供第一印象的小幅图片. 在为应用设计图标时,需要牢记设备是多种多样的,这就带来了不同的像素密度(详见 设备与显示 ).为了应对这一问题,提供不同尺寸的图标 ...
- android 蓝牙打印格式,Android蓝牙打印格式排版
最近由于项目需求,在做蓝牙打印的功能.Android连接蓝牙打印机网上满天飞,但是内容的排版却很少. 我也是研究了下,自己封装了一个工具类希望可以方便开发. 这个类叫 BluetoothPrintFo ...
- android开发图片格式,Android程序开发如何处理图像格式类及图像转换
在Android程序开发过程中,明确哪些图像格式类(ImageFormat.PixelFormat及BitmapConfig等)及图像(JPG.PNG及BMP等)的转换方式非常重要,在以后的程序开发过 ...
- android 录制mp4格式,Android系统如何录制屏幕(录制成mp4格式)
不管是教学,还是为了演示,如果能将Android手机(或平板)的屏幕录制成视频文件,那是一件非常酷的事(iOS8已经提供了这一功能,能通过OS X直接在Mac上录制iPad.iPhone的屏幕,win ...
- android 验证邮箱格式,android开发中, 如何验证邮箱的格式 ?
满意答案 moienrn77 2016.09.05 采纳率:56% 等级:9 已帮助:115人 在Android中,调用Email有三种类型的Intent: Intent.ACTION_SEND ...
最新文章
- mysql not in 多列,MySQL中的多列外键?
- 如何在 FPGA 上实现双线性插值的计算?
- vue使用slot分发内容与react使用prop分发内容
- 超级账本 --- ReadWriteSet的逻辑结构
- java json字符串转成 Map或List
- 免费开源!仿微信仿陌陌类APP源代码整项目开源,包括ADT项..
- Unity3D中的Update、LateUpdate和FixedUpdate的意义
- Delphi- repeate
- SpringCloud(8)— 使用ElasticSearch(RestClient)
- c51单片机之数码管显示(共阳极数码管)
- 烤仔TVのCCW丨密码学通识(五)消息认证码
- 【应用推荐】如何选择适合自己的笔记应用?附热门笔记应用上手总结
- 容联云通讯完成发送验证码
- memont高级使用说明
- 如何在 SAP ABAP 系统中使用 Adobe Form 试读版
- 操作系统【动态分区分配算法——首次适应算法、最佳适应算法、最坏适应算法、临近适应算法】
- 图卷积神经网络GCN原理+图结构学习+GAT+VGAE
- 【Qt】关于QLabel显示图片二三事
- 托管 非托管_选择托管服务提供商的终极指南
- 思科firepower数据流处理流程