【问题标题】:Play Background Sound in android applications在 Android 应用程序中播放背景声音
【发布时间】:2014-01-10 11:23:07
【问题描述】:

我想在我制作的应用中播放背景声音。帮帮我,我该怎么做?...这是整个代码。

public class Numbers extends Activity {
    public static MediaPlayer mp = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_numbers);
        ViewPager viewPager = (ViewPager)findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);
    }

    private class ImagePagerAdapter extends PagerAdapter {
        private int[] mImages = new int[]{R.drawable.no1,R.drawable.no2,R.drawable.no3,R.drawable.no4,R.drawable.no5,R.drawable.no6,R.drawable.no7,R.drawable.no8,R.drawable.no9};

        @Override
        public int getCount() {
            return mImages.length;
        }
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
        }
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = Numbers.this;
            ImageView imageView = new ImageView(context);
            int padding =context.getResources().  
            getDimensionPixelSize(R.dimen.activity_vertical_margin);
            imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.CENTER);
            imageView.setImageResource(mImages[position]);
            ((ViewPager) container).addView(imageView, 0);

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                ((ViewPager) container).removeView((ImageView) object);
            }
        }
    }//end of sub-class ImagePagerAdapter
}//End of Numbers class

告诉我我需要在这段代码中添加什么来播放背景音乐,在应用程序运行之前,背景音乐将处于循环模式。

【问题讨论】:

    标签: android audio


    【解决方案1】:

    这是在 android studio 2.2.3 中测试的

    1) 首先将您的music.mp3 复制并粘贴到app.res.raw

    2) 将服务设置为AndroidManifest.xml 如下:

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        :
        :
        <service android:name=".SoundService"  android:enabled="true"></service>
    </application>
    

    3) 添加包含此代码的SoundService.java 文件:

    package com.jahanweb.ring;
    
    import android.app.Service;
    import android.content.Intent;
    import android.media.MediaPlayer;
    import android.os.IBinder;
    
    public class SoundService extends Service {
        MediaPlayer player;
    
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    
        public void onCreate() {
            player = MediaPlayer.create(this, R.raw.music); //select music file
            player.setLooping(true); //set looping
        }
    
        public int onStartCommand(Intent intent, int flags, int startId) {
            player.start();
            return Service.START_NOT_STICKY;
        }
    
        public void onDestroy() {
            player.stop();
            player.release();
            stopSelf();
            super.onDestroy();
        }
    
    }
    

    4) 在活动中使用它是这样的:

    package com.jahanweb.ring;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            //start service and play music
            startService(new Intent(MainActivity.this, SoundService.class));
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        protected void onDestroy() {
            //stop service and stop music
            stopService(new Intent(MainActivity.this, SoundService.class));
            super.onDestroy();
        }
    }
    

    【讨论】:

    • 我有一个启动音乐的游戏的 SplashScreen 类。然后这个画面切换到其他画面,游戏开始。我仍然希望音乐在后面(确实如此)但是当我最小化游戏音乐时仍然播放,所以阻止它的唯一方法是在任务管理器中杀死应用程序。如何解决这个问题?
    • @Raskoljnikovic 如果你打开新问题可能会更好。
    【解决方案2】:

    最好将您的媒体代码投入使用。 这是在后台播放媒体的最佳方式。

    public class serv extends Service{
    
        MediaPlayer mp;
        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
        }
        public void onCreate()
        {   
            mp = MediaPlayer.create(this, R.raw.b);
            mp.setLooping(false);
        }
        public void onDestroy()
        {       
            mp.stop();
        }
        public void onStart(Intent intent,int startid){
    
            Log.d(tag, "On start");
            mp.start();
        }
    }
    

    其中 raw 是在资源中创建的文件夹。 R.raw.b 是一个 mp3 文件。

    【讨论】:

    • 这个是怎么从Activity调用的?
    • 是否可以在后台播放从 API 而不是从原始文件夹接收的音频?
    • 我想做的是,用户将打开我的应用程序。该应用程序将从服务器侦听某些内容。如果服务器发送音频,即使屏幕锁定,应用程序也应该播放它。有可能吗?
    【解决方案3】:
    MediaPlayer  player = MediaPlayer.create(this,  R.raw.music);
    player.setLooping(true); // Set looping
    player.setVolume(100,100);
    
    public int onStartCommand(Intent intent, int flags, int startId) {
        player.start();
        return 1;
    }
    
    @Override
    public void onDestroy() {
        player.stop();
        player.release();
    }
    
    public void onStart(Intent intent, int startId) 
    {
        // TODO
    }
    

    【讨论】:

    【解决方案4】:

    试试下面的链接...希望这会奏效

    How to play audio in android using android service

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多