【问题标题】:Play audio on touch - Android触摸播放音频 - Android
【发布时间】:2018-07-06 00:58:08
【问题描述】:

在我的应用程序中,我想在用户移动磁贴时播放声音,我添加了以下代码 --

private void moveTile(Tile tile, Cell cell) {
        grid.field[tile.getX()][tile.getY()] = null;
        grid.field[cell.getX()][cell.getY()] = tile;
        tile.updatePosition(cell);

        MediaPlayer mp = null;
        if(mp!=null) {
            mp.release();
        }
        mp = MediaPlayer.create(mContext,R.raw.movetile);
        mp.start();
    }

但是每当我移动第一个图块时,应用程序没有响应,它也没有崩溃,任何帮助。

【问题讨论】:

标签: java android android-mediaplayer


【解决方案1】:

1) 在您的代码中,if(mp!=null) {mp.release();} 应移至MediaPlayer mp = null; 上方。否则,它没有任何意义(因为条件总是为假)。

2) 确保 tile.updatePosition(cell) 不是导致您的应用无响应的原因。

3) 试试这种方法,它应该可以工作:

static MediaPlayer mp = null;

// ...

private void moveTile(Tile tile, Cell cell) {
        grid.field[tile.getX()][tile.getY()] = null;
        grid.field[cell.getX()][cell.getY()] = tile;
        tile.updatePosition(cell);

        try
        {
            if (mp != null)
            {
                if (mp.isPlaying ())
                    mp.stop ();

                mp.reset ();
                mp.release ();
                mp = null;
            }

            mp = MediaPlayer.create (getApplicationContext (), R.raw.movetile);

            if (mp != null)
            {
                mp.start ();
            }
            else
            {
                // Handle the error ...
            }

        } catch (Exception e)
        {
            // Handle the error ...
        }
}

【讨论】:

  • 是的,我投了赞成票,但由于我的声誉等级较低,它没有投赞成票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多