2014-01-10 69 views
9

我想在我製作的應用程序中播放背景聲音。幫助我,我該如何做到這一點?...這是整個代碼。在Android應用程序中播放背景聲音

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 

只要告訴我什麼,我需要在此代碼添加到播放背景音樂,這將是循環模式,直到應用程序運行。

回答

12

不如把你的媒體碼服務。 這是在後臺播放媒體的最佳方式。

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文件。

+2

這是如何從Activity中調用的? – Si8

+0

@Si8你可以看到:https://stackoverflow.com/a/46385312/1407491 –

2
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 
} 
1

這在Android Studio中2.2.3

1)第一個副本進行測試並粘貼到music.mp3app.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(); 
    } 
}