Android:将声音另存为铃声和通知

Android:将声音另存为铃声和通知,android,audio,notifications,ringtone,Android,Audio,Notifications,Ringtone,我正在保存应用程序中的声音,用作铃声或通知声音。以下是我的部分代码,摘自第页: 我的理解是,声音将被保存以及铃声,通知声音和警报,因为标志都设置为“真”。至少在模拟器上,这是可行的,但在实际设备上,声音只显示在铃声列表中,我不知道为什么 编辑:我试图进一步调查:删除带有“IS_RINGTONE”的行不会改变任何东西(如果一次只能使用一个标志),声音不会显示在通知声音列表中 感谢您的帮助 您好,请选择0r我尝试了解决此问题的方法,以下是我迄今为止提出的解决方案: 在模拟器上,路径无关紧要,声音将显

我正在保存应用程序中的声音,用作铃声或通知声音。以下是我的部分代码,摘自第页:

我的理解是,声音将被保存以及铃声,通知声音和警报,因为标志都设置为“真”。至少在模拟器上,这是可行的,但在实际设备上,声音只显示在铃声列表中,我不知道为什么

编辑:我试图进一步调查:删除带有“IS_RINGTONE”的行不会改变任何东西(如果一次只能使用一个标志),声音不会显示在通知声音列表中

感谢您的帮助


您好,请选择0r

我尝试了解决此问题的方法,以下是我迄今为止提出的解决方案:

在模拟器上,路径无关紧要,声音将显示在铃声和通知列表中

在手机上,如果文件保存到
/media/audio/ringtones
/media/audio/
,声音将显示在铃声列表中,但不作为通知。
如果使用路径
/media/audio/notifications
,声音最终会显示在通知列表中(!),但不再显示在铃声中

所以,我似乎必须保存两次声音才能将其放入两个列表中?(但为什么在模拟器上保存一次就可以了?)


如果有另一种方法可以将声音同时保存到两个列表(甚至三个列表,也有闹钟铃声,我只是不想玩它们),只保存一次,请告诉我。(现在我的解决方法是一个对话框,让用户选择是将声音保存为铃声还是通知。)

您必须查看Android中的媒体播放器API i、 e.android.media.MediaPlayer; android.media.MediaPlayer.OnCompletionListener。这是: .... 这就是你如何在点击听者时播放声音:

     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(); 
                      } 
                 }); 
                } 
            }; 

还有,你试过在播放时录制声音吗?试试看是否有效。

如果您尝试从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。我正在我的应用程序中使用它,它似乎可以工作。

我没有尝试播放声音,也没有录制声音。也没有涉及ClickListener。你读过这个问题吗?很好,谢谢。我会尝试一下,如果可行的话会给你回复。我曾尝试使用AudioColumns,但根本无法在我的设备上保存铃声或通知声音-因此MediaStore.Audio.Media似乎是一种解决方法。我的音板也遇到了这个问题。据我所知,你必须多次保存它。我只是使用了一个AlertDialog,它提供了保存位置的选项,从而改变了路径。但既然你想将它保存到两个列表中,我想你必须保存两次。经过测试和研究,我相信这实际上是一种方法,谢谢你的确认。我想我会坚持我的解决方法,并询问用户在哪里保存文件,而不是仅仅保存两次声音(正如您所提到的)。虽然这不是我的意图,但我想这是更好的可用性。有人知道这在FLASH CS5.5上是否可行吗????我已经在那里开发了一个音板,我真的需要紧急添加铃声。
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);