2013-03-06 4 views
0

В настоящее время я работаю над проектом для своего исследования, в этом проекте мне нужно создать небольшую игру для Android. Если все пойдет хорошо, моя игра будет выглядеть более или менее похожей на старые игры покемонов для игрового автомата.Управление классом между действиями

Игра построена с использованием нескольких видов деятельности (заставки, меню, игрового вида, вида боя и т. Д.). Сейчас у меня все работает. Но есть одна вещь, которая беспокоит меня и где окружающие меня люди не могут дать ясный ответ.

В игре у меня есть класс под названием MusicPlayer.java. Этот класс используется для воспроизведения фоновой музыки во время большинства мероприятий. Прямо сейчас я инициализирую этот класс в oncreate активности и установил его для воспроизведения файла .mp3 из папки res/raw. Когда я начинаю другое действие, я вызываю .close() из MusicPlayer.

public class MusicPlayer { 

private MediaPlayer player; 

public void Play(int songid, Context cont) 
{ 
    player = MediaPlayer.create(cont, songid); 
    try { 
      player.start(); 
    } 
    catch (Exception e) 
    { 
     Log.d("MusicPlayer","Something wend wrong while starting the song!"); 
     Log.d("ERROR",e.toString()); 
    } 
} 


public void close() 
{ 
    if(player != null) 
    { 
     player.stop(); 
     player.release(); 
     player = null; 
    } 
} 

Создание этого класса снова и снова кажется немного неуклюжим, и это заставляет меня начинать новую песню с каждого вида деятельности. Я также заметил, что при запуске нового действия старая активность продолжает работать. Если я не буду называть .close, музыка продолжает воспроизводиться в следующем окне. Есть ли способ снова использовать этот объект? Например, чтобы вызвать метод, который изменяет/останавливает песню? Я уже сделал некоторые попытки Google по этому поводу, но я не могу заставить объект двигаться с помощью Activity. Он не вписывался в .putExtras(), и я не мог создать Parcelable из него.

Правильно, теперь это довольно настенный текст, и я сожалею об этом ... Но это ограничение для моего проекта действительно меня задевает и с моим очень ограниченным знанием программирования android/java (я использую to .net, только работающий в java/android уже месяц), это улучшится, поэтому, если кто-нибудь знает что-то, что я должен изучить, это было бы здорово!

ответ

1

Вы можете использовать Intent Service, чтобы играть музыку, используя намерения общаться с вашей деятельности (например, чтобы изменить песню, остановить музыку, когда ваше приложение не на переднем плане, и т.д.)

+0

Эй, спасибо за быстрый awsner. Я читал об этом, и мне кажется, что я должен девственно попробовать завтра. Я дам вам знать, как это получилось! –

+0

Правильно жаль насчет задержки, но я, наконец, получил время. И после небольшого Struggeling мне удалось преобразовать свой класс Musicplayer в Intent Service, ведьма работает лучше, чем в старой ситуации! –

+0

Рад помочь :) – nicopico

Смежные вопросы