【问题标题】:How to Gradually Accelerate Sound Playing Speed in Android?如何逐渐加快 Android 中的声音播放速度?
【发布时间】:2020-04-05 11:01:16
【问题描述】:

我想播放一个会逐渐加快播放速度的声音,即第一次播放 1x 速度,然后 1.5x 速度,然后 2.0x 速度,然后 3.5x,4x,......类似的东西。我试着写了一些代码,比如:

        MediaPlayer mp;
        float mpDrumFreq = 0f;
        float frequency = 1f;

        mp = MediaPlayer.create(MainActivity.this, R.raw.tiktok);
        mp.setLooping(true);
        mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    mpDrumFreq = Math.min(10f, (mpDrumFreq+frequency) );
                    mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(mpDrumFreq));
                }
            }
        });

        TextView play = findViewById(R.id.play);

        play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.start();
            }
        });

在这里,MediaPlayer mp 播放声音。我正在尝试使用这条线 mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(newSpeed)); 提高 setOnCompletionListener 内的速度 我还有一些其他的变化。但它没有用。我不知道为什么。有谁知道怎么做?

在这种情况下,我尝试使用 MediaPlayer,但可以随意提出任何建议,例如 SoundPool 或其他一些库。 谁能帮帮我?

【问题讨论】:

    标签: java android kotlin audio


    【解决方案1】:

    您可以尝试使用 SoundPool:

    private static SoundPool sound;
    private static SparseIntArray soundPoolMap = new SparseIntArray();
    ...
    // 1 - use one thread
    sound = new SoundPool(1, AudioManager.STREAM_MUSIC, 100);
    soundPoolMap.put(0, sound.load(application, R.raw.sound, 0));
    ...
    // last parameter - rate of sound
    sound.play(soundPoolMap.get(0), 1.0f, 1.0f, 0, 0, 1f);
    

    但正如 Howard Liu here 所写,SoundPool 没有 setOnCompletionListener() 并建议使用 custom class

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多