Android:保存声音作为铃声和通知
我正在保存从我的应用程序发出的声音以用作铃声或通知声音。下面是我的代码,从this页面参加:Android:保存声音作为铃声和通知
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, soundName);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");
values.put(MediaStore.Audio.Media.ARTIST, "artist");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
this.getContentResolver().insert(uri, values);
我的理解是,声音将被保存并作为铃声,通知声音和报警器,标志都设置为“真” 。至少在模拟器上这可以工作,但在实际的设备上,声音只出现在铃声列表中,我不知道为什么。
编辑:我试图进一步调查:删除与“IS_RINGTONE”行不会改变任何东西(如果一次只能使用一个标志),声音不会显示在列表中与通知声音。
任何帮助表示赞赏。
亲切的问候,Select0r
我与路径发挥各地得到这个解决,这里就是我想出了迄今为止的解决方案:
模拟器上的路径没关系,声音会出现在铃声以及通知列表中。
在电话上,如果文件保存到/media/audio/ringtones
或/media/audio/
但不作为通知,声音将显示铃声列表。
如果我使用路径/media/audio/notifications
,声音最终会出现在通知列表(!)中,但不会再出现在铃声中。
所以看来我必须保存声音两次才能进入这两个列表? (但是为什么在模拟器上保存一次呢?)
如果还有另外一种方法让声音进入这两个列表(甚至三个列表中,也有闹钟铃声,我只是没有打扰他们玩耍)只保存一次,请让我知道。 (现在我的解决方法是让用户选择是否将声音保存为铃声或通知的对话框。)
您必须查看Android 中的媒体播放器API(ieandroid.media.MediaPlayer; android.media.MediaPlayer.OnCompletionListener。那就是: http://developer.android.com/reference/android/media/package-summary .... 这就是你怎么玩一个声音在烧制时点击收听:
private OnClickListener btnDontBeStupidListener = new
OnClickListener()
{
public void onClick(View v)
{
//Toast.makeText(getBaseContext(), "Don't Be Stupid audio file
is being played", Toast.LENGTH_SHORT).show();
final MediaPlayer mp = MediaPlayer.create(iMEvil.this,
R.raw.stupid);
//mp.start();
try {
mp.start();
//mp.release();
}catch(NullPointerException e){
Log.v("MP error", e.toString());
}
mp.setOnCompletionListener(new OnCompletionListener(){
// @Override
public void onCompletion(MediaPlayer arg0) {
mp.release();
}
});
}
};
而且,你尝试过录音的同时播放呢?尝试一下,看看它是否有效。
我*不*试图播放声音而我*不*录制一个。还有*没有* ClickListener参与。你甚至读过这个问题吗? – Select0r 2010-11-02 09:26:19
如果您尝试将MediaStore.Audio.Media更改为AudioColumns,有帮助吗?就像这样:
values.put(AudioColumns.ARTIST, "artist");
values.put(AudioColumns.IS_RINGTONE, true);
values.put(AudioColumns.IS_NOTIFICATION, true);
values.put(AudioColumns.IS_ALARM, true);
values.put(AudioColumns.IS_MUSIC, false);
不说MediaStore.Audio.Media参考已过时,但我认为现在AudioColumns使用。我在我的应用程序中使用它,它似乎工作。
有谁知道这是否可能在FLASH CS5.5上? 我在那里开发了一个音板,我真的非常需要将铃声添加到紧急事项中。 – 2011-10-17 20:04:34