Android, воспроизводите звук в тот момент, когда на экране виден вид - PullRequest
1 голос
/ 17 февраля 2012

У меня проблемы со звуком в Android. Вот сделка, у меня очень простой заставки. Мое намерение состоит в том, чтобы после загрузки экрана он воспроизводил очень маленький аудиофайл.

Проблема в том, что большую часть времени звук будет воспроизводиться до того, как на самом деле появится заставка.

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

Вот фрагмент из моего XML-файла:

<ImageView
android:src="@drawable/splash"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>

всплеск - это изображение .png

А вот код onCreate: @Override protected void onCreate (BundlevedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.scarysplash);

mpPlaySound = MediaPlayer.create(this, R.raw.scream1);
mpPlaySound.start();
}

}

Заранее спасибо за помощь!

1 Ответ

2 голосов
/ 17 февраля 2012

Вы не единственный, у кого похожая проблема :)) Есть несколько способов, как это сделать, популярный способ реализовать OnGlobalLayoutListener () , например ::

    View yourView = ...;
                yourView.getViewTreeObserver().addOnGlobalLayoutListener(
                    new ViewTreeObserver.OnGlobalLayoutListener() 
                    {
                        // -----------------------------------------
                        //
                        // Callback method to be invoked when the 
                        // global layout state or the visibility 
                        // of views within the view tree changes 
                        //
                        // -----------------------------------------            
                        @Override
                        public void onGlobalLayout() 
                        {

                                        // Remove view
                            View yourView = findViewById( R.id.yourId );

                            if ( yourView != null )
                            {
                                yourView .getViewTreeObserver().removeGlobalOnLayoutListener(this);

                            }
// PLAY SOUND
                        }
                    });

Petr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...