Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Fa
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 7
#1

Автоповорот запускает несколько раз activity - Программирование Android

16.09.2015, 01:51. Просмотров 238. Ответов 5
Метки нет (Все метки)

В приложении воспроизводиться звук с помощью MediaPlayer при срабатывании определенных событий. Если перевернуть телефон то звук начинает двоиться, троиться и так далее. Как будто оно множит основное activity / В чем может быть проблема подскажите?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2015, 01:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Автоповорот запускает несколько раз activity (Программирование Android):

Несколько Activity в одной вкладке TAB - Программирование Android
Как разместить несколько Activity в одной вкладке TAB?

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity - Программирование Android
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было принято из-за скорости. Но...

Изменение layout-элементов одного activity из другого activity - Программирование Android
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго activity, каким образом мне можно это...

Android - Передача данных с одного Activity на другое Activity - Программирование Android
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном Activity , а обработка и вывод...

Из одного Activity получить значение другого Activity - Программирование Android
Запускаю активити: public class MainActivity extends Activity { ... ... Intent intent = new Intent(getBaseContext(),...

Вызвать из одной activity функцию другой activity - Программирование Android
вызвать из одного activity функцию другой activity Подскажите, можно ли такое реализовать? Допустим у меня есть основная активити и...

5
Mikalai
261 / 237 / 95
Регистрация: 11.01.2015
Сообщений: 663
16.09.2015, 01:59 #2
При смене ориентации экрана activity пересоздается. Может быть в этом проблема.
0
Fa
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 7
16.09.2015, 02:22  [ТС] #3
после того как прописал в манифесте android:launchMode="singleInstance" убрались запуски одного и того же приложения) думал для автоповорота тоже поможет, а нет.

Даже если бы активити пересоздавалось то я по завершении воспроизведения удаляю звук.
Java
1
2
3
nextPointMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                                            public void onCompletion(MediaPlayer mp) {
                                                mp.release();
но он все равно троиться при поворотах(

как будто на фоне работает 10 приложений одновременно(
0
sskdroid
8 / 8 / 3
Регистрация: 03.03.2015
Сообщений: 68
16.09.2015, 05:19 #4
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class AudioPlayer {
    private MediaPlayer mPlayer;
 
    public void stop() {
        if (mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
        }
    }
 
    public void play(Context c) {
        stop();
        mPlayer = MediaPlayer.create(c, R.raw.m);
        mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                stop();
            }
        });
 
        mPlayer.start();
    }
 
    public void pause() {
        if(mPlayer.isPlaying()){
            mPlayer.pause();
        }else {
            mPlayer.start();
        }
    }
}
"В методе play(Context) вызывается метод MediaPlayer.create(Context, int).
Объект Context нужен MediaPlayer для опознания идентификатора ресурса аудиофайла.
(Также существуют другие методы MediaPlayer.create(…), используемые
при получении аудио из других источников, например из Интернета или по ло-
кальному URI.)

В методе AudioPlayer.stop() экземпляр MediaPlayer освобождается, а полю mPlayer
присваивается null. Вызов MediaPlayer.release() уничтожает экземпляр.

Уничтожение кажется слишком агрессивной интерпретацией «остановки», но для
этого есть веские причины. Класс MediaPlayer удерживает аудиооборудование
и другие системные ресурсы до вызова release(). Эти ресурсы совместно ис-
пользуются всеми приложениями. Класс MediaPlayer включает метод stop() для
перевода экземпляра MediaPlayer в остановленное состояние, из которого он может
быть перезапущен. Однако при простом воспроизведении аудиоданных корректнее
уничтожить экземпляр вызовом release(), а потом создать его заново.

Простое правило: удерживайте ровно один экземпляр MediaPlayer и только на то
время, в котором он что-то воспроизводит.

Для соблюдения этого правила мы внесем пару изменений в play(Context). Добавьте
исходный вызов stop() и заставьте слушателя вызывать stop() при завершении
воспроизведения."

===================

из книги Б. Харди, Б. Филлипс. Программирование под Android. Для профессионалов.

может чем поможет.
там на 10-ти страницах описывается создание простейшего аудиоплеера, код опробовал, при поворотах все норм было. ток там через фрагменты все.

Добавлено через 1 минуту
"Класс MediaPlayer может продолжить воспроизведение после уничтожения HelloMoonFragment,
потому что MediaPlayer работает в другом программном потоке
(thread). Сейчас мы намеренно игнорируем этот многопоточный аспект HelloMoon.
Управление потоками более подробно рассматривается в главе 26."

===

а вот еще какой момент есть
0
Minor946
5 / 5 / 1
Регистрация: 08.04.2015
Сообщений: 17
16.09.2015, 09:13 #5
Делаю проект с видео проигрывание, и тоже при повороте экрана пересоздавалась активити, помогло добавить в манифесте строчку
XML
1
android:configChanges="orientation|screenSize"
0
Fa
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 7
16.09.2015, 11:42  [ТС] #6
Спасибо за развернутые ответы. Буду пробовать.
0
16.09.2015, 11:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2015, 11:42
Привет! Вот еще темы с ответами:

Из одной Activity запустить функцию другой Activity - Программирование Android
например есть Activity2 которое я показываю в Dialog окошке, там у меня находятся Date and Time Picker ы (Дата - начало, Дата - окончание)...

Как вызвать Activity не из Activity? - Программирование Android
Приложение перехватываем входящие СМС. Есть класс унаследованный от BroadcastReceiver, который обозначен в манифесте как приемник...

Создание Activity в другом Activity - Программирование Android
Нормально ли создавать экземпляр какого-либо Activity в текущем Activity? Дело в том, что код, нужный для работы с данными находится в...

Не все окна реагируют на автоповорот. Можно ли исправить? - Программирование Android
Доброго времени суток! итак решил я всё же сесть на ведройд так как мне понарассказали, что с ним можно вытворять всякое, и купил агрегат...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.