如下是为Notification自定义铃声的部分片段
- 铃声选择(已记住上次选择的铃声)
_btnNotificationChooseRington
.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra( RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_NOTIFICATION);
Uri ringtongUri = null;
final SharedPreferences sharedPreferences = MoreSettingActivity.this.getSharedPreferences(Constants.SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE);
String uri = sharedPreferences.getString(CommonDefn.PREFERENCE_NOTIFICATION_RINGTONG, "null");
if("null".equals(uri)) {
ringtongUri = (Uri) null;
}
else {
ringtongUri = android.net.Uri.parse(uri);
}
intent.putExtra( RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.notification_ringtong));
intent.putExtra( RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,ringtongUri);
startActivityForResult( intent, RESULT_FIRST_USER);
}
});
- 铃声保存(注意静音保存为null)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, String.format("requestCode=%d,resultCode = %d", requestCode, resultCode));
if (resultCode == RESULT_OK ) {
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null) {
String ringTonePath = uri.toString();
SharedPreferences _prefse = getSharedPreferences(Constants.SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE);
_prefse.edit().putString(CommonDefn.PREFERENCE_NOTIFICATION_RINGTONG, ringTonePath).commit();
}
else {Log.d(TAG, "null");
SharedPreferences _prefse = getSharedPreferences(Constants.SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE);
_prefse.edit().putString(CommonDefn.PREFERENCE_NOTIFICATION_RINGTONG, "null").commit();
}
}
else if (resultCode == RESULT_CANCELED) {
}
super.onActivityResult(requestCode, resultCode, data);
}
- 铃声设置
private boolean isNotificationSoundEnabled() {
//return sharedPrefs.getBoolean(Constants.SETTINGS_SOUND_ENABLED, true);
return !sharedPrefs.getString(CommonDefn.PREFERENCE_NOTIFICATION_RINGTONG, "null").equals("null");
}
private boolean isNotificationVibrateEnabled() {
return sharedPrefs.getBoolean(Constants.SETTINGS_VIBRATE_ENABLED, true);
}
if(isNotificationSoundEnabled()&&isNotificationVibrateEnabled()){
notification.sound = android.net.Uri.parse(sharedPrefs.getString(CommonDefn.PREFERENCE_NOTIFICATION_RINGTONG, Settings.System.DEFAULT_NOTIFICATION_URI.toString()));
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
}
else if (isNotificationSoundEnabled()&&!isNotificationVibrateEnabled()) {
notification.sound = android.net.Uri.parse(sharedPrefs.getString(CommonDefn.PREFERENCE_NOTIFICATION_RINGTONG, Settings.System.DEFAULT_NOTIFICATION_URI.toString()));
//notification.defaults = Notification.DEFAULT_SOUND;
}
分享到:
相关推荐
在Android平台上,为应用程序自定义铃声是一项常见的需求,它可以让用户根据个人喜好为特定的通知、消息或事件设置专属的声音。下面将详细讲解如何在Android app中实现这一功能。 首先,你需要确保你的应用拥有访问...
本示例主要探讨如何利用Notification API创建各种效果的提示,包括系统默认样式以及自定义铃声和震动。 首先,我们要了解`Notification`的基本结构。一个`Notification`通常包含图标、标题、内容、时间戳和扩展信息...
要实现自定义铃声功能,通常需要在消息中包含一个特定的键值对,如`ringtone`,指向你希望播放的铃声音频文件。注意,iOS设备可能有限制,只能选择系统预设的铃声或静音。 7. **文件`xiaomipush201706-master`分析...
在Android应用开发中,为用户提供自定义铃声的功能是一项常见的需求。本文将详细介绍如何在Android app中实现这一功能,包括调用系统铃声选择界面、播放选定铃声、记录用户选择以及添加必要的权限。 首先,我们需要...
2. 声音提示:可以使用RingtoneManager来实现声音提示,例如播放默认的通知铃声或自定义的铃声。 六、Android Notification实例详解 1. Android Notification的生命周期:Notification的生命周期包括创建、显示、...
指定系统铃声可使用`Audio.Media.INTERNAL_CONTENT_URI`。 2. **Flags**: `Notification`的`flags`字段可以控制通知的行为,如`FLAG_INSISTENT`可以使声音循环播放。 3. **Lights**: 可以通过`ledARGB`、`ledOnMS...
6. **Notification**:当闹钟触发时,通过`Notification`向用户展示提醒。可以自定义通知的标题、内容、图标、声音等,以提供良好的用户体验。 7. **Service**:可能需要创建一个`Service`来处理闹钟触发时的后台...
5. **Dialog**: 虽然在锁屏上通常使用Notification,但若想模拟Dialog效果,可以创建一个自定义的Activity,并在BroadcastReceiver中启动它。使用`WindowManager.LayoutParams`设置Activity为浮动窗口,使其看起来像...
此外,也可能涉及到文件系统操作,读取和设置用户的自定义铃声。 4. **多媒体处理**:由于涉及到铃声,源码中必定包含对音频文件的处理。Android提供MediaStore类来访问系统中的音频文件,而MediaPlayer类则可以...
在安卓平台上,实现一个闹钟应用涉及到多个关键知识点,包括Android系统的AlarmManager服务、BroadcastReceiver、PendingIntent...同时,也可以根据实际需求进行定制化修改,如添加更多闹钟设置选项、自定义铃声库等。
这个项目不仅涵盖了基本的Android应用构建,还涉及到自定义铃声管理、播放等功能的实现,是理解Android开发实践的一个理想实例。 首先,我们需要了解Android开发的基础知识。Android是一种基于Linux的开源操作系统...
7. **自定义铃声播放器**: 如果需要自定义播放器UI,可以使用Ringtone类,它提供了play()和stop()方法,且支持通过AudioAttributes进行更精细的控制。 8. **音频焦点管理**: 在播放音频时,需要考虑音频焦点,...
这通常适用于那些希望自定义振动反馈的应用程序。例如,可以开启或关闭特定类型的振动(如来电振动、通知振动): - 开启来电振动: ```java audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, ...
在Android中,用户可以自定义铃声、通知声音和闹钟声音,这些设置存储在系统的设置数据库中。 1. **铃声资源管理**:在Android中,铃声通常存储在`/res/raw`或`/media/ringtone`目录下,是可打包在应用内的音频文件...
8. **SQLite数据库**:为了保存用户的铃声选择或者自定义铃声,应用可能会使用SQLite数据库来存储数据,包括文件路径、铃声名称等。 9. **通知(Notification)**:当用户设置新的铃声时,可能通过通知来告知用户,...
- **声音和震动**:设置特定的铃声或振动模式,使得通知更具辨识度。 - **大视图样式**:在可扩展的通知中,可以使用大视图样式展示更多的信息。 3. **发送通知**: - 使用`NotificationManager`服务发送通知,...
8. **通知和广播**:当用户设置了一个新的铃声,应用可以发送一个自定义广播通知其他组件,或者通过Notification向用户展示设置成功的消息。 9. **版本适配与兼容性**:考虑到Android系统的碎片化,开发时需要关注...
`Notification`是Android提供的一种在状态栏显示消息的方式,可以配合振动、铃声等提醒用户。创建`Notification`需要以下步骤: 1. 创建`NotificationCompat.Builder`对象,这是构建`Notification`的工具类,可以...
这款应用不仅具有基础的闹钟功能,还可能包含一些独特的特性,如自定义铃声、重复设置、小憩模式等,以满足不同用户的个性化需求。 在开发一个基于安卓的自定义闹钟项目时,我们需要掌握以下几个核心知识点: 1. *...
5. **铃声设置**:Android允许用户自定义铃声,开发者可以通过ContentResolver和Uri来访问系统媒体库并设置指定的音频作为铃声。了解如何在应用中处理RingtonePicker对话框,以及如何处理权限问题,是创建相关功能的...