【问题标题】:How to play ringtone selected from RingtonePreference如何播放从 RingtonePreference 中选择的铃声
【发布时间】:2012-05-14 16:29:13
【问题描述】:

我正在尝试播放从 RingtonePreference 中选择的铃声。怎么玩?

这是我的xml文件代码

<RingtonePreference
    android:title="Choose Alarm"
    android:key="ringtone"
    android:summary="this is summary"
    ></RingtonePreference>

这是我在 java 中所做的事情

SharedPreferences getAlarms = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String alarms = getAlarms.getString("ringtone", "default ringtone");

当我像这样使用吐司时

Toast.makeText(getApplicationContext(), alarms, Toast.LENGTH_LONG).show();

然后就显示这种路径

content://media/internal/audio/media/50

但是我不知道怎么玩这个。

请帮忙。

【问题讨论】:

    标签: java android android-emulator


    【解决方案1】:

    您可以从首选项和 您可以使用 RingtoneManager 类轻松播放铃声

    SharedPreferences getAlarms = PreferenceManager.
                                  getDefaultSharedPreferences(getBaseContext());
    String alarms = getAlarms.getString("ringtone", "default ringtone");
    Uri uri = Uri.parse(alarms);
    
    Ringtone r = RingtoneManager.getRingtone(context, uri);
    r.play();
    

    【讨论】:

      【解决方案2】:
      private void alarm(){
          SharedPreferences getAlarms = PreferenceManager.
                                        getDefaultSharedPreferences(getBaseContext());
          String alarms = getAlarms.getString("ringtone", "default ringtone");
          Uri uri = Uri.parse(alarms);
          playSound(this, uri);
      
          //call mMediaPlayer.stop(); when you want the sound to stop
      }
      
      
      private MediaPlayer mMediaPlayer;
      private void playSound(Context context, Uri alert) {
              mMediaPlayer = new MediaPlayer();
              try {
                  mMediaPlayer.setDataSource(context, alert);
                  final AudioManager audioManager = (AudioManager) context
                          .getSystemService(Context.AUDIO_SERVICE);
                  if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
                      mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
                      mMediaPlayer.prepare();
                      mMediaPlayer.start();
                  }
              } catch (IOException e) {
                  System.out.println("OOPS");
              }
          }
      

      这应该是你想要的 :) 我希望它有效

      【讨论】:

      • 感谢 SmartLemon。我在 BroadcastReceiver 中调用 playSound 方法。所以当我将鼠标悬停在它上面时它给了我这个错误“Test类型中的方法playSound(Context,Uri)不适用于参数(new BroadcastReceiver(){},Uri)”
      • 替换它。这可能
      • 广播接收器将上下文和意图作为参数,您需要使用调用广播接收器的上下文来调用 playSound()。
      • 获取我认为的父类的基本上下文。我不明白为什么它不起作用。
      • 我使用以下方法构建通知:Notification notification= new Notification.Builder(context)。设置内容标题(标题+“:”+注释)。设置内容文本(标题)。 setSmallIcon(R.drawable.ic_launcher)。设置内容意图(内容意图)。 setSound(uri).getNotification();
      【解决方案3】:

      Here 是 Commonsware 的一个示例项目,您可以下载并检查其工作情况。

      你可以从你得到的字符串中获取 Uri,

      SharedPreferences getAlarms = PreferenceManager.
                                        getDefaultSharedPreferences(getBaseContext());
      String alarms = getAlarms.getString("ringtone", "default ringtone");
      Uri uri = Uri.parse("alarms");
      

      然后你可以使用MediaPlayer播放uri。

      【讨论】:

      • 我已经检查了那个项目,但这不是我想要的。我想要的只是如何播放选择的声音。
      • 如何做到这一切的例子都在上面:)
      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多