Android Studioでアニメーションを使ってくじを引くアプリを作成しているのですが効果音の出るタイミングをうまく合わせる設定ができません。
流れとしては
1)MainActivityにボタンを設定して押すとインテントでAnimeActivityへ
2)AnimeActivity(福引くじ)が開始します。
3)Runnableを使ってタイミングをずらしてResultActivity(くじの結果)へ
です。
上記の流れなのですがこれにアニメが開始してからくじの結果までガラガラ効果音(wavGaraPlay)をいれようと
やっているのですがうまくいきません。
うまくいかない症状)
AnimeActivityの中の3か所にそれぞれ順番に設定(設定A,設定B,設定C)してみたのですが・・・
AnimeActivityのアニメが開始する前に効果音だけ出て効果音が終了した時点で
アニメが開始してしまいます。
スレッドが原因の様な気がしますがどういう風にすればいいか分かりません。
ヒントでも良いので分かる方お願いします。
MainActivity(抜粋)
kujiButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int kujiNumber = preferences.getInt("kujiNumkey",0); if(kujiNumber < kujiArrayList.size()) { Log.d("test_kujiNumber", String.valueOf(kujiNumber)); Log.d("test_kujiarraysize", String.valueOf(kujiArrayList.size())); //animeスタート Intent intent = new Intent(getApplicationContext(), AnimeActivity.class); intent.putExtra("kUJIID", "kujiID"); startActivity(intent); } } });
AnimeActivity
public
1 2 public static Flag mFlag; 3 private String kujiId = ""; 4 5 6 private static final int SamplingRate = 44100; 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.activity_anime); 12 13 //設定A wavGaraPlay() 14 15 mFlag = new Flag(); 16 17 new Handler().postDelayed(delayFunc,5700); 18 19 Intent kujiIntent = getIntent(); 20 kujiId = kujiIntent.getStringExtra("kUJIID"); 21 22 ImageView imgAnime = (ImageView)findViewById(R.id.imageAnime); 23 imgAnime.setBackgroundResource(R.drawable.nfc_anime); 24 AnimationDrawable frameAnimation = (AnimationDrawable)imgAnime.getBackground(); 25 frameAnimation.start(); 26 27 //設定B wavGaraPlay() 28 } 29 @Override 30 public void onRestart() { 31 super.onRestart(); 32 if (mFlag.isFinishFlag() == true) { 33 finish(); 34 } 35 } 36 37 private final Runnable delayFunc = new Runnable() { 38 @Override 39 public void run() { 40 Intent resultIntent = new Intent(getApplicationContext(), ResultActivity.class); 41 resultIntent.putExtra("kUJIID", kujiId); 42 startActivity(resultIntent); 43 44 //設定C wavGaraPlay() 45 } 46 }; 47 48 private void wavGaraPlay(){ 49 InputStream inputStream; 50 byte[] wavData; 51 try { 52 inputStream = getResources().openRawResource(R.raw.garagarabell); 53 wavData = new byte[(int)inputStream.available()]; 54 inputStream.read(wavData); 55 inputStream.close(); 56 57 int bufSize = android.media.AudioTrack.getMinBufferSize( 58 SamplingRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); 59 60 AudioTrack audioTrack = new AudioTrack( 61 AudioManager.STREAM_MUSIC, SamplingRate, AudioFormat.CHANNEL_OUT_MONO, 62 AudioFormat.ENCODING_PCM_16BIT, bufSize, AudioTrack.MODE_STREAM); 63 audioTrack.play(); 64 audioTrack.write(wavData, 44, wavData.length-44); 65 }catch (IOException e){ 66 e.printStackTrace(); 67 Log.d("debug", "error"); 68 } 69 } 70}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。