幼児の息子の音で響板アプリを作っています。アプリは MainActivity クラスを開くだけで、ボタンのスクロール可能なリストが表示されます。このリストを押すと、息子が何かを叫んでいる録音済みの MP3 が再生されます。
Nexus 7 でデバッグまたは実行すると、Choreographer エラーが発生し、50 ~ 90 フレームがスキップされます。警告は、「アプリケーションがメイン スレッドで処理しすぎている可能性がある」というものです。私のデバイスでは、アプリを閉じて再度開くまで、3 つのランダム ボタンがサウンドの再生を拒否しますが、別の 3 つのランダム ボタンは動作を拒否します。この問題は、アプリの単純な LinearLayout (ScrollView なし) に 8 つのボタンしかない場合には発生しませんでした。
私は Java と Android の両方のプログラミングの初心者ですが、私の推測では、笑えるほど貧弱なコードは適切に機能するためにメモリを大量に消費しています。私の質問は、独自のサウンドを再生する 33 個のボタンのスクロール可能なリストをどのようにコーディングしますか、または誰かが私のコードを改善する方法を教えてくれませんか?
MainActivity.java (この質問の最初の 3 つのボタン/サウンドのみを表示):
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MediaPlayer ahh = MediaPlayer.create(this, R.raw.ahh);
final MediaPlayer dededeh = MediaPlayer.create(this, R.raw.dededeh);
final MediaPlayer neganegabunbunbug = MediaPlayer.create(this, R.raw.naganagbunbun);
Button bahh = (Button) this.findViewById(R.id.Ahhhbutton);
bahh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ahh.start();
}
});
}
}
そして activity_main.xml (この質問の最初の 3 つのボタンのみ):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/Ahhhbutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:background="@layout/button_shape"
android:text="@string/button1a"
android:textColor="#d1d1d1"
android:textSize="20sp" />
<Button
android:id="@+id/dededehbutton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:background="@layout/button_shape"
android:text="@string/button1b"
android:textColor="#d1d1d1"
android:textSize="20sp" />
<Button
android:id="@+id/neganegabunbunbugbutton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:background="@layout/button_shape"
android:text="@string/button1c"
android:textColor="#d1d1d1"
android:textSize="20sp" />
Button bdededeh = (Button) this.findViewById(R.id.dededehbutton);
bdededeh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dededeh.start();
}
});
Button bnaganagbunbun = (Button) this.findViewById(R.id.naganagabunbutton);
bnaganagbunbun.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
neganegabunbunbug.start();
}
});
</LinearLayout>
</ScrollView>
</LinearLayout>