首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止在android中播放先前的铃声

如何停止在android中播放先前的铃声
EN

Stack Overflow用户
提问于 2014-09-03 09:36:45
回答 1查看 3.6K关注 0票数 2

我正试着处理铃声通知。现在,我正在播放铃声按一下按钮。当我在第一次尝试后单击按钮时,我需要停止先前的铃声,并启动新的铃声。但我做不到。

这是我的代码:

代码语言:javascript
复制
RingtoneManager  manager = new RingtoneManager(this);
Ringtone ringtone = manager.getRingtone(getApplicationContext(), uri);
            manager.setStopPreviousRingtone(true);
            ringtone.play();
            final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (ringtone.isPlaying())
                        ringtone.stop();
                }
            }, 30000);

但这不管用。

这是我的完整代码:

代码语言:javascript
复制
RingtoneManager manager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    pickMediaButton = (Button) findViewById(R.id.pickMediaButton);
    manager = new RingtoneManager(this);
    manager.setStopPreviousRingtone(true);
    pickMediaButton.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);
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
            startActivityForResult(intent, 5);

        }
    });

}

@SuppressWarnings("static-access")
@Override
protected void onActivityResult(final int requestCode,final int resultCode, final Intent intent) {

    String chosenRingtone = null;

    if (resultCode == Activity.RESULT_OK && requestCode == 5)
    {
        Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

        if (uri != null)
        {
            chosenRingtone = uri.toString();
            Ringtone ringtone = manager.getRingtone(getApplicationContext(), uri);

            ringtone.play();
            /*  final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (ringtone.isPlaying())
                        ringtone.stop();
                }
            }, 30000);*/
        }
        else
        {
            chosenRingtone = null;
        }
    }       

    Toast.makeText(MainActivity.this, chosenRingtone+" ", Toast.LENGTH_LONG).show();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-03 09:51:41

没有理由在用例中使用RingtoneManager实例。

只需通过RingtoneManager.getRingtone(Context,Uri)获得铃声,并将其设置为一个成员。在获得新的铃声之前,请检查您以前是否启动了铃声,并停止它,以防它在播放。

代码语言:javascript
复制
private Ringtone ringtone;

public void method(...) {
    if (ringtone != null) ringtone.stop();
    ringtone = RingtoneManager.getRingtone(this, uri);
    ringtone.play();
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25640964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档