#やりたいこと
Kotlinにてボタンをスタートボタンをタップすると音が鳴り、
ストップボタンをタップすると音が止まるアプリを練習の為に作りたいです。
音を鳴らすためにMediaPlayerを使うことはわかりましたが、
MediaPlayerのコードをどこのactivityに記述すればいいのかわかりません。
試しにMainactivity.ktに入力するとパソコン上で音声を開き再生はしますが
アプリは開くことができませんでした。
コードを記述するactivityまたは
こちらのコード以外に何かいい方法、いいサイト等ありましたらご教授頂ければ幸いです。
#Code
kotlin
1package com.example.oto 2 3import android.content.Context 4import android.media.MediaPlayer 5import androidx.appcompat.app.AppCompatActivity 6import android.os.Bundle 7import android.widget.Button 8import kotlinx.android.synthetic.main.activity_main.* 9 10 11class MainActivity : AppCompatActivity() { 12 13 private val musicManager: MusicManager = MusicManager(this@MainActivity) 14 15 override fun onCreate(savedInstanceState: Bundle?) { 16 super.onCreate(savedInstanceState) 17 setContentView(R.layout.activity_main) 18 19 // Button for start music 20 val buttonStart: Button = findViewById(R.id.start_music) 21 22 // Resister listener 23 buttonStart.setOnClickListener { 24 musicManager.startMusic() 25 } 26 27 // Button for stop music 28 val buttonStop: Button = findViewById(R.id.stop_music) 29 30 // Resister listener 31 buttonStop.setOnClickListener { 32 musicManager.stopMusic() 33 } 34 } 35} 36 37 38class MusicManager(context: Context) { 39 40 private lateinit var mediaPlayer: MediaPlayer 41 private val myContext: Context = context 42 43 fun startMusic() { 44 mediaPlayer = MediaPlayer.create(myContext, R.raw.test) 45 mediaPlayer.isLooping = true 46 mediaPlayer.start() 47 } 48 49 fun stopMusic() { 50 mediaPlayer.stop() 51 mediaPlayer.reset() 52 mediaPlayer.release() 53 } 54} 55
#補足情報
androidstudio4.1
#コメントに対する追記となります
2020-12-14 19:51:11.901 19828-19828/com.example.oto E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.oto, PID: 19828 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.oto/com.example.oto.MainActivity}: java.lang.NullPointerException: findViewById(R.id.start_music) must not be null at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.NullPointerException: findViewById(R.id.start_music) must not be null at com.example.oto.MainActivity.onCreate(MainActivity.kt:19) at android.app.Activity.performCreate(Activity.java:7136) at android.app.Activity.performCreate(Activity.java:7127) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
♯コメントに対する追記 activity_main
kotlin
1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".MainActivity"> 8 9 <Button 10 android:id="@+id/button" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:text="@string/start" 14 tools:layout_editor_absoluteX="143dp" 15 tools:layout_editor_absoluteY="119dp" /> 16 17 <Button 18 android:id="@+id/button2" 19 android:layout_width="wrap_content" 20 android:layout_height="wrap_content" 21 android:text="@string/stop" 22 tools:layout_editor_absoluteX="138dp" 23 tools:layout_editor_absoluteY="363dp" /> 24</androidx.constraintlayout.widget.ConstraintLayout>
♯コメントに対する追記 何度も申し訳ございません。
2020-12-14 21:11:28.702 21871-21896/com.example.oto E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1 2020-12-14 21:11:28.928 21871-21896/com.example.oto D/EGL_emulation: eglMakeCurrent: 0xe7e90700: ver 2 0 (tinfo 0xefb625c0) 2020-12-14 21:11:37.371 21871-21871/com.example.oto D/AndroidRuntime: Shutting down VM 2020-12-14 21:11:37.373 21871-21871/com.example.oto E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.oto, PID: 21871 kotlin.UninitializedPropertyAccessException: lateinit property mediaPlayer has not been initialized at com.example.oto.MainActivity.stopMusic(MainActivity.kt:42) at com.example.oto.MainActivity$onCreate$2.onClick(MainActivity.kt:31) at android.view.View.performClick(View.java:6597) at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992) at android.view.View.performClickInternal(View.java:6574) at android.view.View.access$3100(View.java:778) at android.view.View$PerformClick.run(View.java:25885) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 2020-12-14 21:11:37.395 21871-21871/com.example.oto I/Process: Sending signal. PID: 21871 SIG: 9
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。