5

私はAndroidを初めて使用し、ボタンがクリックされたときにカスタムMP3を再生するなどの簡単なことをしようとしています。これはかなり 一般的な 質問のようですが、私のコードは例に従っていて、エラーは発生していませんが、シミュレーターでも実際の電話でも音が聞こえません。

私のMainActivity.java:

public class MainActivity extends Activity {

    private static final String TAG = "MyActivity";

    public void MyActivity(Bundle onSavedStateInstance) {
        Log.v(TAG, "Initializing sounds...");

        final MediaPlayer mp = MediaPlayer.create(this, R.raw.alarma_67560);

        Button play_button = (Button)this.findViewById(R.id.play_button);
        play_button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Log.v(TAG, "Playing sound...");
                mp.start();
            }
        });
        Log.v(TAG, "Sounds initialized.");
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

そして私のactivity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/padding_medium"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />

    <Button
        android:id="@+id/play_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/play_button" />

</RelativeLayout>

エラーが表示されず、シミュレーターまたは実際の電話でアプリが正しく実行されているように見えるEclipseプラグインを使用して開発していますが、再生ボタンをクリックしても何も起こりません。シミュレーターがサウンドをサポートしているかどうかはわかりませんが(サポートしていると思います)、電話でサウンドがミュートされていないことを確認しました。

私は何が間違っているのですか?

また、EclipseのコンソールまたはLogCatパネルのいずれにも、ログステートメントが表示されません。それらがどこかに印刷されているのを見るべきですか?

4

2 に答える 2

10

これは非常に単純な理由で機能しません。MyActivity()が呼び出されることはありません。

AndroidはアクティビティのonCreate()を呼び出しますが、他のメソッド呼び出しはすべてユーザーが行う必要があります。MyActivity()メソッドを呼び出すことはないため、ボタンにonClickListener()が与えられることはなく、サウンドが再生されることもありません。代わりに次のコードを使用してみてください。

public class MainActivity extends Activity {

    private static final String TAG = "MyActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.v(TAG, "Initializing sounds...");

        final MediaPlayer mp = MediaPlayer.create(this, R.raw.alarma_67560);

        Button play_button = (Button)this.findViewById(R.id.play_button);
        play_button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Log.v(TAG, "Playing sound...");
                mp.start();
            }
        });
        Log.v(TAG, "Sounds initialized.");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
于 2012-07-07T01:08:27.730 に答える
3

メソッド/コンストラクターpublicvoidMyActivity(Bundle onSavedStateInstance)が呼び出されることはなく、コードが実行されることはないため、コードをonCreate内およびsetContentView()の後に配置する必要があります。このようなもの:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.v(TAG, "Initializing sounds...");
    final MediaPlayer mp = MediaPlayer.create(this, R.raw.alarma_67560);
    Button play_button = (Button)this.findViewById(R.id.play_button);
    play_button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Log.v(TAG, "Playing sound...");
            mp.start();
        }
    });
    Log.v(TAG, "Sounds initialized.");
}
于 2012-07-07T01:10:50.650 に答える