Служба Android Media Player зависает на Samsung Galaxy S

У меня есть радиоприложение для моего веб-сайта, работающее на моем EVO и других устройствах, которое отлично работает, но пользователь говорит мне, что в его Samsung Galaxy S приложение зависает (он присылает мне видео, в котором я вижу, что служба медиаплеера получает вызов и запускается, но нет звука, и приложение зависает, нет экрана сбоя для отправки отчета или ничего, оно просто зависает), у меня нет Galaxy для тестирования, так что я могу сделать? у кого-нибудь еще была похожая проблема? Я пытаюсь вставить свой код сюда, но кто-то решил закрыть мой вопрос без каких-либо предложений. все, что мое приложение делает, это из основного действия, кнопка вызывает медиаплеер, добавляет URL-адрес моего mp3-потока и запускает плательщик.

Button canal1 = (Button) findViewById(R.id.bcanal1);
        canal1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
               mUrl = "http://67.212.165.106:8161";
                   textRadioName.setText("you are listening to VARIADO!");
                       Intent i = new Intent (ChevereMovilActivity.this, PlayerService.class);
        startService(i);
        PlayerService.setSong(mUrl, "Temp Song", null); 
        start();
        }});

метод запуска

@Override
public void start() {
    if (PlayerService.getInstance() != null) {
        PlayerService.getInstance().startMusic();
    }
}

в манифесте

<service android:name=".PlayerService" 
            android:label="@string/app_name"> 
            <intent-filter>
        </intent-filter>    
    </service>

как я уже сказал, это работает в моем кануне, но не Samsung Galaxy S, я использую Android 2.2


person zvzej    schedule 05.04.2012    source источник
comment
Я нашел эту [ссылку] (innovator.samsungmobile.com/cms/cnts/), где вы можете получить скин Samsung GALAXY S для эмуляция телефона, я следую инструкциям на сайте, но не могу собрать AVD,   -  person zvzej    schedule 07.04.2012
comment
выдает ошибку [2012-04-06 16:07:51 - SDK Manager] Скин "Galaxy_s" не существует. [2012-04-06 16:07:51 - Диспетчер SDK] Отсутствует путь к скину в папке AVD. Что я делаю неправильно?   -  person zvzej    schedule 07.04.2012


Ответы (1)


Служба зависла, потому что Samsung Galaxy S не может подготовить поток, и вы, вероятно, используете mediaPlayer.prepare() вместо mediaPlayer.prepareAsync().

Я думаю, что это недокументированная «причуда» некоторых устройств Galaxy. Проблема в формате потока. Если написать в консоли:

wget -S -O stream http://67.212.165.106:8161

и им:

head -n 12 stream

вы можете увидеть что-то вроде:

ICY 200 OK
icy-notice1:<BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR>
icy-notice2:SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>
icy-name:My Station name
icy-genre:Various
icy-url:http://www.radiokolergan.com
content-type:audio/mpeg
icy-pub:1
icy-br:64

qOCéúÐX43‘¤]ÝáÅQ(;Œ6½v<‡ÿò„

Я думаю, что проблема в этом заголовке. Если вы попытаетесь использовать другие URL-адреса (например: http://195.55.74.213/rtve/radio4.mp3?GKID=804c9f24cb4811e1af4600163ea2c743), вы не получите этот заголовок, и он отлично воспроизводится в Samsung Galaxy Tab и других устройствах.

person Brais Gabin    schedule 11.07.2012
comment
Я обнаружил, что на самом деле эти потоки работали, но только когда у меня был включен WiFi, я думаю, что галактика остановится, если поток пытается воспроизвести качество слишком высокое. - person zvzej; 13.07.2012
comment
У меня не работает поток http://67.212.165.106:8161 при включенном WiFi. Буду продолжать изучать проблему. Если я найду что-то новое, я отредактирую ответ. - person Brais Gabin; 13.07.2012
comment
Я тоже сталкиваюсь с той же проблемой, и это происходит как для prepare(), так и для prepareAsync(). Вызовы функций не возвращают или никогда не запускают какие-либо обратные вызовы, такие как onError, onPrepared и т. д. Тот же код отлично работает для потоков без заголовка ICY, но не для потоков с заголовком ICY. Тот же код работает на S4, S5, Galaxy Tab и т. д., но не на S6. :( - person Ken; 21.10.2015