WARN/AudioFlinger(33): запись заблокирована на 76 мс, 7773 отложенных записи, поток 0xb3f0

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

Он работает, но мой лог-кот завален сообщениями:

09-14 16:46:30.117: WARN/AudioFlinger(33): запись заблокирована на 76 мс, 7773 отложенных записи, поток 0xb3f0 и больше ничего не регистрируется.

Вот мой IntentService:

import android.app.IntentService;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnErrorListener;
import android.widget.Toast;

public class MusicService extends IntentService {

    MediaPlayer mPlayer;
    private OnErrorListener mErrorListener;

    public MusicService() {
        super("MusicService");
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // TODO Auto-generated method stub
          // Normally we would do some work here, like download a file.


    }   

    ///////////////////////////////////////////////////////////

    @Override
    public int onStartCommand (Intent intent, int flags, int startId)

    {
        Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
        mPlayer.setLooping(true);
        mPlayer.start();

        return super.onStartCommand(intent,flags,startId);


    }

    @Override

    public void onCreate ()

    {
        super.onCreate();
      //  try{
            mPlayer = MediaPlayer.create(this, R.raw.jingle);
        //}catch (IllegalArgumentException e) {
            //e.printStackTrace();
        //}catch (IllegalStateException e ) {
            //e.printStackTrace();
        //}

        if(mPlayer!= null)
        {
            mPlayer.setLooping(true); // Set looping
            mPlayer.setVolume(100,100);
        }


    mPlayer.setOnErrorListener(new OnErrorListener() {

        public boolean onError(MediaPlayer mp, int what, int extra) {
            // TODO Auto-generated method stub
            onPlayError();
            return true;
        }

    });


    }

    private void onPlayError() {
        Toast.makeText(this, "music player failed", Toast.LENGTH_SHORT).show(); 
        if(mPlayer != null)
        {
            try{
                mPlayer.stop();
                mPlayer.release();
            }finally {
                mPlayer = null;
            }
        }
    }

person Ruchira    schedule 14.09.2011    source источник
comment
да, и поскольку зацикливание установлено на true. Он воспроизводит его без остановок   -  person Ruchira    schedule 15.09.2011
comment
Я получаю то же самое в своем файле журнала, но, похоже, это ничему не мешает.   -  person Alan Moore    schedule 15.09.2011
comment
Хотя это ничему не мешает, но похоже, что это блокирует печать других сообщений в журналах.   -  person Ruchira    schedule 15.09.2011
comment
Ну, если что-то выяснишь, дай мне знать! Кажется, это временно блокирует вещи, но мне интересно, не является ли это просто артефактом эмулятора.   -  person Alan Moore    schedule 16.09.2011
comment
@Alan Раньше я думал, что это сообщение связано с зацикливанием музыки, но это не так. Я изменил код, используя службу вместо службы намерений. Теперь мне нужно определить эту проблему. Моя первоначальная догадка может быть музыкальный сервис что-то блокирует, но почему и что нужно выяснить   -  person Ruchira    schedule 17.09.2011
comment
Моя тоже простая служба.   -  person Alan Moore    schedule 18.09.2011
comment
У меня есть эта проблема, и я не испортил звук или даже пространство имен мультимедиа. Я использую Phonegap, однако, похоже, это не вызывает немедленных проблем.   -  person Caimen    schedule 15.11.2011


Ответы (1)


Необходимы разрешения. Поместите их в AndroidManifest.xml:

<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

Я тестировал его в эмуляторе Android 2.2, поэтому моя версия minSdkVersion равна 8.

person wolfkin    schedule 24.11.2011
comment
Это просто неправильно. Если бы одно из этих разрешений было необходимо и отсутствовало, это не был бы audioflinger, жалующийся на задержку, а скорее приложение зависало или часть его функций не работала. - person Chris Stratton; 21.05.2012
comment
Согласен с Крисом, эти разрешения не нужны для воспроизведения аудио! - person Bjarke Freund-Hansen; 05.11.2012