サウンド
ばーんと配布1-4のコードを
貼る
http://m.gmobb.jp/ymmkito/doujyo/android/SoundActivity.java
resの中にディレクトリ新規作成したい:
resのうえで右クリック→新規ディレクトリ raw
そこにDLした音源を入れる
C:\Users\web.DESKTOP-EQR2U6K\Desktop\android_stadio\Lesson4\app\src\main\res\raw
この方法以外でやってしまったら変なとこにできてハテナってしまった。
soundに関しては
いま流れてるものをstopして
ぷりぺあして
startしないと動かないよ(stop→startだけではだめ)
finishがはいっていたりはいっていなかったりする件:
mainがあってtimeがあってまたmainにもどってすると、3画面開いているらしい
startするとどんどんふえる
そんなに増やすのいやだなというときはfinishをつかう
そうするとじぶんがおわる(ウィンドウが閉じる)
androidstadioは、いまxmlでかくのが主流。
昔気質の筆者はjavaばかりで説明するらしい
本をかうときはどっちのスタイルかみてからかうといい(両方が理想)
マシンは8GBのメモリでもいける。SSDがよろしい。
↑このGradleスクリプトのあたりはまあ触ることがない。ごくごくまれに「このバージョンではうごかないやん」というとき
ここを29.0.0にしたら動くとかいうことがあるらしい。
Constraint Layout コンストレイントレイアウト(こんすとらくと?レイアウト)レイアウトにボタンひとつでするにはこれ。
こっちにしておいたほうがアンドロイドさん的に画面がはやい。
ので
リニアレイアウトでつくっておいて、できあがったら最後に変換するのがよろしい。
soundActivityもうごいてよかった
なおシステムUIは動いていません的なエラーが出たが、単純にしばらく待ってやり直したら普通に動いたりした
SoundActivity.java
package com.example.lesson4;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class SoundActivity extends AppCompatActivity implements View.OnClickListener {
private Button mainButton, soundButton1, soundButton2;
private SoundPool soundPool;
private int soundId;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sound);
soundButton1 = findViewById(R.id.soundButton1);
soundButton2 = findViewById(R.id.soundButton2);
mainButton = findViewById(R.id.mainButton);
soundButton1.setOnClickListener(this);
soundButton2.setOnClickListener(this);
mainButton.setOnClickListener(this);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onResume() {
super.onResume();
AudioAttributes attr = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA) //AudioAttributes.USAGE_GAME
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build();
soundPool = new SoundPool.Builder()
.setAudioAttributes(attr)
.setMaxStreams(4)
.build();
soundId = soundPool.load(this, R.raw.se, 1);
mediaPlayer = MediaPlayer.create(this, R.raw.se);
}
@Override
protected void onPause() {
super.onPause();
soundPool.release();
mediaPlayer.release();
}
@Override
public void onClick(View v) {
Intent intent;
if (v != null) {
switch (v.getId()) {
case R.id.soundButton1:
soundPool.play(soundId, 100, 100, 1, 0, 1);
break;
case R.id.soundButton2:
if (mediaPlayer.isPlaying()) {
try {
mediaPlayer.stop();
mediaPlayer.prepare();
mediaPlayer.seekTo(0);
} catch (Exception e) {
}
}
mediaPlayer.start();
break;
case R.id.mainButton:
finish();
break;
default:
break;
}
}
}
}
Mainはこう
MainActivity.java
package com.example.lesson4;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private TextView myText;
private Button timeButton,preferenceButton,soundButton;
private EditText myEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myEdit = findViewById(R.id.myEdit);
timeButton = findViewById(R.id.timeButton);
preferenceButton = findViewById(R.id.preferenceButton);
soundButton = findViewById(R.id.soundButton);
timeButton.setOnClickListener(this);
preferenceButton.setOnClickListener(this);
soundButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent;
if (v != null) {
switch (v.getId()) {
case R.id.timeButton:
intent = new Intent(this, TimeActivity.class);
startActivity(intent);
break;
case R.id.preferenceButton:
intent = new Intent(this, MyPreferenceActivity.class);
intent.putExtra("iData", myEdit.getText().toString());
startActivity(intent);
break;
case R.id.soundButton:
intent = new Intent(this, SoundActivity.class);
startActivity(intent);
break;
}
}
}
}
lesson4はzipして自分のドライブに投げてある