- 締切済み
【android】onTouchが動作しない
開発初心者です。 現在androidアプリを制作しています。 画面に触れている間のみsoundpoolで音を出すようしたいのですが、 どうしても一箇所だけエラーが発生していまい上手く動作しません。 下記ソースコードと参考画像になります。 https://www.dropbox.com/s/14sk5kj3wm1tcdo/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202014-07-15%2009.13.49.png public class FullscreenActivity extends Activity { SoundPool sp; int sound_id; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fullscreen); sp = new SoundPool( 1, AudioManager.STREAM_MUSIC, 0 ); sound_id = sp.load(this, R.raw.hito_ge_shinzo06, 1 ); public boolean onTouch(View v , MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN){ boolean startedFlag = false; if(startedFlag == false) { sound_id = sp.play(sound_id,1.0F, 1.0F, 0, -1, 1.0F); startedFlag = true; } else { sp.resume(sound_id); } } else if(event.getAction() == MotionEvent.ACTION_UP) { sp.pause(sound_id); } } } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
ざっと見たのですが、プログラムの構造がなんだか変ですよ? なぜ、onTouchメソッドが、onCreateメソッドの中で定義されているのでしょう? onTouchをonCreateの外に出して(Activityの普通のメソッドとして)定義するようにしてみてください。それと、タッチイベントならば、public boolean onTouchEvent(MotionEvent event)となると思いますが……。 それとも、OnTouchListenerのonTouchとして定義するつもりだったのでしょうか。だとするとまた話が変わって、 setOnTouchListener(new OnTouchListener(){ ……ここにonTouchメソッドの定義が来る…… }); こんな感じで書かないといけないでしょう。このonTouchは、どちらを意図して書いているのでしょうか。