当前位置: 首页 > 知识库问答 >
问题:

播放原始文件夹中的所有mp3文件

孟翰海
2023-03-14

我用一个布局和两个按钮构建了一个简单的应用程序,这是我的代码。。

package com.example.tessound;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener
{

MediaPlayer player;
Button play,mute;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    play = (Button)findViewById(R.id.button1);
    play.setOnClickListener(this);
    mute = (Button)findViewById(R.id.button2);
    mute.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void onClick(View view)
{
    if(view.getId()==R.id.button1)
    {
        playSound(1);
    }
    else if(view.getId()==R.id.button2)
    {
        playSound(2);
    }
}

public void playSound(int arg)
{
    try
    {
        if(player != null)
        {
            if (player.isPlaying()) 
            {
                player.stop();
                player.release();
            }
        }
    }
    catch(Exception e)
    {

    }

    if (arg == 1)
    {
        player = MediaPlayer.create(this, R.raw.atur);
    }
    else if (arg == 2)
    {
        player = MediaPlayer.create(this, R.raw.back);
    }

    if(player != null)
    {
        player.setLooping(false);
        player.start();
    }

    }
}

我的原始文件夹包含:atur.mp3、back.mp3、belajar.mp3、level.mp3、skip.mp3和start.mp3...当我单击按钮静音时,播放back.mp3,但当我单击按钮播放时,原始文件夹中的所有mp3都被播放...有评论吗?

共有2个答案

江鹏
2023-03-14

我记得有一个类似的问题,我的代码最终是这样的:

if (!getmMediaPlayer().isPlaying()) {
    try {
        AssetFileDescriptor fd = getResources().openRawResourceFd(
                R.raw.snooze);
        getmMediaPlayer().setDataSource(fd.getFileDescriptor(),
                fd.getStartOffset(), fd.getLength());
        getmMediaPlayer().setAudioStreamType(
                AudioManager.STREAM_ALARM);
        getmMediaPlayer().setLooping(true);
        getmMediaPlayer().prepare();
        getmMediaPlayer().start();
    } catch (IllegalStateException e) {
        Log.e(TAG, e.toString());
    } catch (IOException e) {
        Log.e(TAG, e.toString());
    }
}

具体来说,我认为setDataSource很重要。

牟飞沉
2023-03-14

我复制了你的代码并进行了测试。在我的系统中,它工作得很好。我刚刚重命名了歌曲和按钮id,因为我无法获得这些原始歌曲。请看这个代码,代码是一样的,因为我刚刚复制了这个代码:

package com.mukherjee.satyaki.test;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity1 extends Activity implements OnClickListener
{

MediaPlayer player;
Button play,mute;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    play = (Button)findViewById(R.id.songid1);
    play.setOnClickListener(this);
    mute = (Button)findViewById(R.id.songid2);
    mute.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void onClick(View view)
{
    if(view.getId()==R.id.songid1)
    {
        playSound(1);
    }
    else if(view.getId()==R.id.songid2)
    {
        playSound(2);
    }
}

public void playSound(int arg)
{
    try
    {
        if(player != null)
        {
            if (player.isPlaying()) 
            {
                player.stop();
                player.release();
            }
        }
    }
    catch(Exception e)
    {

    }

    if (arg == 1)
    {
        player = MediaPlayer.create(this, R.raw.ram1);
    }
    else if (arg == 2)
    {
        player = MediaPlayer.create(this, R.raw.ram3);
    }

    if(player != null)
    {
        player.setLooping(false);
        player.start();
    }

    }
}

您的代码很好,按照我之前的假设,重新启动模拟器并擦除用户数据,然后进行测试。我认为这个问题可以通过你的代码解决。

谢谢。

 类似资料:
  • 我在res目录中创建了raw文件夹,并插入了mp3文件。我试着用mediaplayer播放我的mp3文件。这是我的消息来源- 但是当我运行应用程序时,我有exception.this是我的logcat异常- 我如何解决我的问题?如果有人知道解决办法,请帮助我。提前感谢。

  • 我来自台湾,我的英语很基础,谢谢你的原谅。 我构建了一个iPad应用程序并发布到App Store,这是一种交流板(AAC适用于说话困难的人)。它在主视图上有几个按钮,当用户触摸一个时,应用程序将播放与该按钮对应的mp3声音。我已经将所有mp3文件放在一个文件夹中,并确定在运行时动态播放哪个文件。 最近我正在开发这个应用的Android版本,但我遇到了一个问题,当我点击视图上的一个按钮时,Medi

  • 我尝试从res/raw文件夹播放音频文件,这是我用来播放文件的代码,这不会产生任何错误,并且我的设备音量最大,但没有任何声音。我尝试了MP3和WAV文件。 启动后我在 LogCat 上收到以下消息 帮助我解决这个问题,将不胜感激。

  • 你好,有人能告诉我如何玩mp3/mp4到Android默认浏览器吗? 我在参考资料中的原始文件夹中有mp3/mp4文件。 我尝试了下面的代码,但被忽略,无法工作,它将打开默认播放器,但没有播放选定的文件。 谁能推荐一下吗?

  • 我正在创建一个带有背景音乐的应用程序。我试着在课堂上演奏那首音乐: 我试过了: 当我把它放在我的文件的根目录中并使用它时: 我得到这个错误:javax.sound.sampled。不受支持的AudioFileException:无法从输入URL获取音频输入流更新我尝试使用JavaFX: 但是我得到了错误: 此行中的错误:MediaPlayer Player=new MediaPlayer(媒体);

  • 如何在android的简单播放器中播放Resources/raw中的mp3文件?类似于android中默认文件管理器中的文件预览 请帮帮我