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

MediaPlayer: как продолжить работу аудио-плеера в фоновом режиме? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Android WebSocket http://www.cyberforum.ru/android-dev/thread1796791.html
Здравствуйте, начинаю разбиратся с WebSocket, использую библиотеку nv WebSocket Client, соединится с сервером получилось, передать и получить сообщение тоже. Но у меня есть несколько Activity в...
Программирование Android Принцип работы RecyclerView Можете объяснить принципп работы RecyclerView во время скроллинга? Как он заполняется элементами? Сколько элементов находится в каждый момент времени в этом виджете при скроллинге? Какой максимальный... http://www.cyberforum.ru/android-dev/thread1796772.html
Программирование Android Передача параметров внутрь apk
Всем привет! Для аналитики установок приложения нужно передавать идентификатор клика внутрь apk. Как я себе это представляю: есть распакованный из apk архив приложения, при переходе юзера скрипт...
Программирование Android Ошибка с xml разметкой после добавления Drawer
Я добавил в свою активность Drawer, и после этого она перестала запускаться и появилась вот эта ошибка: 08-20 17:50:52.920 23304-23304/spsoft.myapplication E/AndroidRuntime: FATAL EXCEPTION: main ...
Программирование Android MediaPlayer: не получается воспроизвести музыкальный файл из списка http://www.cyberforum.ru/android-dev/thread1796175.html
Не получается воспроизвести музыкальный файл из списка. Алгоритм такой: записал все media файлы на устройстве в список, далее отобразил названия треков в listview. Скажите как теперь запустить...
Программирование Android Баг или фича в работе светового сенсора? Всем привет. Недавно ваял приложение, очень простое, оно определяет освещение и исходя из этого включает или выключает фонарик. Вся эта история работает из сервиса. Проблема вот в чем, когда я гашу... подробнее

Показать сообщение отдельно
kozak95
34 / 34 / 10
Регистрация: 01.11.2013
Сообщений: 319
22.08.2016, 15:11  [ТС]
REALIST07, Сделал следующим образом:
С активити стартую сервис, соответсвено вызывается OnCommandStart:
Java
1
2
3
4
5
6
7
8
9
10
11
12
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        int method = 0;
 
        if (intent != null) {
            method = intent.getIntExtra("action", -1);
            path = intent.getStringExtra("path");
        }
        mHandler.sendMessage(mHandler.obtainMessage(method, intent));
 
        return START_STICKY;
    }
В сервис номер действия которое выполнится - это у меня запуск плеера: там я вызываю App.sendLocalBroadcastMessage и передаю текущее время композиции и общее
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    @Override
    public boolean handleMessage(Message msg) {
        int method = msg.what;
 
            switch (method) {
                case 0:
                    //Intent intent = (Intent) msg.obj;
                    try {
                        mediaPlayer.setDataSource(path);
                        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                        mediaPlayer.prepare();
                        mediaPlayer.start();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    App.sendLocalBroadcastMessage("MyAction", mediaPlayer.getCurrentPosition(),mediaPlayer.getDuration());
                break;
            }
        return false;
    }
sendLocalBroadcastMessage выглядит вот так:
Java
1
2
3
4
5
6
    public static boolean sendLocalBroadcastMessage(String action,int result1, int result2) {
        Intent sendIntent = new Intent();
        sendIntent.putExtra("mediaPos_new",result1);
        sendIntent.putExtra("mediaMax_new",result2);
        return LocalBroadcastManager.getInstance(context).sendBroadcast(sendIntent);
    }
Ну и в активити принимаю:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
        IntentFilter intentfilter= new IntentFilter();
        intentfilter.addAction("MyAction");
        LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                int mediaPos_new = intent.getIntExtra("mediaPos_new", -1);
                int mediaMax_new = intent.getIntExtra("mediaMax_new",-1);
                seekbar.setMax(mediaMax_new);
                seekbar.setProgress(mediaPos_new);
                tvDurationCurrent.setText((millsecToSec(String.valueOf(mediaMax_new))));
                tvDurationEnd.setText((millsecToSec(String.valueOf(mediaPos_new))));
            }
        },intentfilter);
Но приложение падает с NullPointer. Что неправильно делаю?

Добавлено через 33 минуты
С NullPointer решил проблему, но как постоянно передавать эти сообщения на активити?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.