2012-02-28 17 views
1

私の大学のラジオ局から音楽をストリーミングする簡単なラジオアプリを作った。私が抱えている問題は、アプリケーションがストリームを準備するのにかかる時間が、再生ボタンが反応しないように見えるということです。 詳細: アプリの読み込み時間が最大になる方法

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mp = new MediaPlayer(); 
    initializeUI(); 
    setSource(); 
    preparedNotify(); 
    prepareMP(); 
} 

void initializeUI() {... 
} 

void setSource() {... 
} 

void prepareMP() { 
    mp.prepareAsync(); 
} 

アプリを見ることができるように

とすぐのonCreateが呼ばれるようprepareAsyncを開始しますが、ユーザーが再生ボタンをクリックした場合、それが準備される前に、何も起こらないので、悪いUXを作成します。私の質問の核心に

だから、私は

a)のいずれかに何かできることは、ストリーム

Bを準備する時間を短縮あり)を押すからユーザーを防ぎます準備が整うまでボタンを押し続けてください。

+0

ボタンが完全にロードされてからボタンが表示されるまで、ボタンを回転している進行状況インジケータに置き換えることを検討しましたか? – jpalm

+0

これをどうやって行うのですか?思考は私の心を越えていたが、コードに変換する方法がわからない – Rubiksmoose

+0

ユーザーがボタンをクリックするたびにSpinnerビューをどこかに表示する:http://www.dotnetexpertsforum.com/dialog-box-with-spinner -view-in-android-t1485.html –

答えて

1

setOnPreparedListenerを使用すると、MediaPlayerの準備が完了したことを知ることができます。ユーザーが準備が整う前に再生ボタンをクリックすると、playWhenPreparedのようなフラグを設定してそのリスナーをチェックインし、「バッファリング...」ダイアログのようなUIを表示できます。準備が整っていれば、ただ遊ぶことができます。

0

再生ボタンに「押された状態」を与え、クリックされてからonPostExecuteまでの画像を押した状態にすることができます。その間にリスナーを削除することもできます

2

これらの状況では、いくつかの選択肢があります。まず、ストリームがロードされるまで再生ボタンをグレーアウトします。プレイをクリックしても何も起こらなければ、このように人々は迷惑にならないでしょう。 (これはおそらく、この状況に最も頻繁に対応します)。次に、あなたのアプリにスプラッシュスクリーンを使用することを考えることができます。これはユーザーを少し悩ませるかもしれませんが、あなたのニーズに応じて良い解決策かもしれません。ストリームにはロードに時間がかかるでしょう。インターネットがどのように機能するのか、ビットはあまりにも速く動くだけです。プレバッファリングを行ったトップビューを提供することで、いつでもそれらを遅らせることができます。そして、ユーザーが準備ができたらいつでもあなたのアプリケーションをクリックすることができます。

0

このようなアプリの通常のUIを使用するだけで、ユーザーはボタンを押すのを待つことになります。スピンしているアイコンを使用してストリームを読み込むこともできます(たとえば、左上または右隅)。それはあなたの目的のために働くだけでなく、より使い慣れた直観的なインターフェースをユーザーに提供するでしょう。がんばろう! -Sam

関連する問題