忍者ブログ

からすまる日誌 java

android studio(11) sound

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

android studio(11) sound

サウンド
 
ばーんと配布プリント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 コンストレイントレイアウト(こんすとらくと?レイアウト)レイアウトにボタン1つでするにはこれ。
こっちにしておいたほうがアンドロイドさん的に画面が速い
ので、
リニアレイアウトでつくっておいて、できあがったら最後に変換するのがよい。
 

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して自分のドライブに投げてある
 
PR

コメント

ブログ内検索

P R