2016-08-20 3 views
0

Ich versuche Soundpool zu verwenden, um Sound in meiner Android App zu spielen. Ich habe 3 Aktivitäten, bei denen ich Sound spielen muss. Kann ich Sounds also nur einmal beim Start der Anwendung laden? Kann ich eine globale Klasse erstellen und den gesamten Sound einmal laden und in anderen Aktivitäten verwenden?Loading Sound einmal für alle Aktivitäten

+0

Probieren Sie die Dienste aus, da Musik immer ein Hintergrundjob ist, es sei denn, Sie geben einen Benutzercontroller, der damit umgehen kann. – sumandas

Antwort

0

können Sie versuchen, dieses Beispiel

//start service 
Intent svc=new Intent(this, BackgroundSoundService.class); 
startService(svc); 

//Add in manifest file 
<service 
    android:enabled="true" 
    android:name="com.package.name.BackgroundSoundService" /> 

public class BackgroundSoundService extends Service { 
    private static final String TAG = null; 
    MediaPlayer player; 
    public IBinder onBind(Intent arg0) { 

     return null; 
    } 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     player = MediaPlayer.create(this, R.raw.idil); 
     player.setLooping(true); // Set looping 
     player.setVolume(100,100); 

    } 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     player.start(); 
     return 1; 
    } 

    public void onStart(Intent intent, int startId) { 
     // TO DO 
    } 
    public IBinder onUnBind(Intent arg0) { 
     // TO DO Auto-generated method 
     return null; 
    } 

    public void onStop() { 

    } 
    public void onPause() { 

    } 
    @Override 
    public void onDestroy() { 
     player.stop(); 
     player.release(); 
    } 

    @Override 
    public void onLowMemory() { 

    } 
} 
0

Ja Sie Ihr Audio in einer globalen Klasse laden. Glücklicherweise stellt uns Android eine solche Klasse namens Application.java zur Verfügung.

public class TestApp extends Application { 

    private static final String TAG = "TestApp"; 

    private static TestApp sTestApp; 

    private MediaPlayer mMediaPlayer; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     sTestApp = this; 
     mMediaPlayer = MediaPlayer.create(this, R.raw.music); 
     mMediaPlayer.setVolume(1, 1); //Volume should have to be between 0.0 to 1.0 
    } 

    public static TestApp getInstance() { 
     return sTestApp; 
    } 

    public void play() { 
     mMediaPlayer.start(); 
    } 
} 

Dann erklärt dies als Anwendungsklasse in Ihrem Manifest

<application 
     android:name=".TestApp" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     ......... 
</application> 

Jetzt wird diese Klasse automatisch gestartet werden, wenn die Anwendung startet und zerstört wird, nachdem Ihre Anwendung vollständig zerstört.

Jetzt können Sie die Audiowiedergabe von

TestApp.getInstance().play(); 

Aufruf aus, wo immer Sie wollen.

Verwandte Themen