Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Медиа плеер 
:(
    Опции темы
Dapo
Дата 13.4.2011, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Доброго всем! Вот решил поиграться с медиаплеером. на основной активити 4 кнопки: при нажатии на первые три проигрывается файлы из ресурсов, при нажатии на 4-ю проигрывание останавливается. Вот что получилось:

Код

Потихоньку двигаюсь в сторону Андроида ))
Решил поиграться с медиаплеером:

MediaPlayer mp;
    
    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final Button btn1 = (Button)findViewById(R.id.btn1);
final Button btn2 = (Button)findViewById(R.id.btn2);
final Button btn3 = (Button)findViewById(R.id.btn3);
final Button btn4 = (Button)findViewById(R.id.btn4);


btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);

}
    public void onDestroy(Bundle savedInstanceState) {
      super.onDestroy();
     if (mp !=null) mp.stop();    
    }

     
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (mp != null) mp.stop();
    switch (v.getId()){    
    case R.id.btn1:
        
        mp = MediaPlayer.create(this,R.raw.c1);
        mp.start();
        break;
    case R.id.btn2:
        
        mp = MediaPlayer.create(this,R.raw.progulka);
        mp.start();
        break;
    case R.id.btn3:
        
        mp = MediaPlayer.create(this,R.raw.bangbang);
        mp.start();
        break;
    case R.id.btn4:
        mp.stop();
        break;
    }
    }
}


Прошу объяснить мне мойже код))) 
1. Почему у меня кнопка стоп не работает если если я уберу из case 4-й кнопки:  mp.stop()?
2. Можно ли один раз создать экземпляр MP а потом просто менять датасурс на файл в ресурсах приложения? (В методах не нашел) Вообще корректно ли так как у меня юзать МР?
3. вопрос вытекает из первого? почему у меня ошибка не валиться если я вызываю mp.stop() после того как он уже отработал  if (mp != null) mp.stop(); или у меня вообще конструкция нерабочая?

Спасибо заранее, я только только осваиваю яву.

Это сообщение отредактировал(а) Dapo - 13.4.2011, 09:52
PM MAIL   Вверх
ivanovpv
Дата 13.4.2011, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Цитата(Dapo @  13.4.2011,  10:08 Найти цитируемый пост)

1. Почему у меня кнопка стоп не работает если если я уберу из case 4-й кнопки:  mp.stop()?

Работает оптимизатор компилятора - он "видит", что ветка кода бесполезная и "выкидывает" его

Цитата(Dapo @  13.4.2011,  10:08 Найти цитируемый пост)

2. Можно ли один раз создать экземпляр MP а потом просто менять датасурс на файл в ресурсах приложения? (В методах не нашел) Вообще корректно ли так как у меня юзать МР?

Я думаю что можно - есть же метод setDataSource()

Цитата(Dapo @  13.4.2011,  10:08 Найти цитируемый пост)

3. вопрос вытекает из первого? почему у меня ошибка не валиться если я вызываю mp.stop() после того как он уже отработал  if (mp != null) mp.stop(); или у меня вообще конструкция нерабочая?

Читаем мануал: 
Код

Calling stop() has no effect on a MediaPlayer object that is already in the Stopped state.




--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Dapo
Дата 14.4.2011, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Спасибо большое. Ну вот все-таки не получается задать сурс на другой файл в ресурсах... Конструкция mp.SetDataSource(R.raw.c1) не работает и по ссылке вашей тоже ответа не нашел.
PM MAIL   Вверх
ivanovpv
Дата 14.4.2011, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



А вы как задаете uri в SetDataSource()? Если ресурс лежит в asset - то тогда uri должен иметь вид

Код

file:///android_raw/[filename]

а если в raw, то:
Код

android.resource://[your.application.package]/raw/[filename]





--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Dapo
Дата 14.4.2011, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



файлы находятся в raw. ну вот такая консрукция работать у меня не хочет: 

Код

mp = new MediaPlayer();
mp.setDataSource("android.resource://com.testapp.testapp/raw/c1.mp3");
mp.start();


Звука нет. (( Мне все-таки кажется что постоянно делать MediaPlayer.Create не корректно. Куда деваются предыдущие экземпляры?

Вы уж извините, вопросы наверное крайне глупые, но изучать начал буквально неделю, более менее плотно.

Это сообщение отредактировал(а) Dapo - 14.4.2011, 09:40
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0588 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.