android - 我可以为所有活动创建一个功能,播放,暂停音乐
问题描述
第一个活动
package com.example.birthdaywish;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void wishButton(View view) {
final EditText editText = findViewById(R.id.editTextTextPersonName);
String name = editText.getText().toString();
Intent intent = new Intent(this, screen2.class);
intent.putExtra("name", name);
startActivity(intent);
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.happy_birthday_song);
mediaPlayer.start(); // no need to call prepare(); create() does that for you
}
}
以上是我的第一个活动。我在按钮单击时播放音乐的同时单击按钮也将打开第二个活动。
第二次活动
package com.example.birthdaywish;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.w3c.dom.Text;
public class screen2 extends AppCompatActivity {
@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen2);
TextView enteredName = findViewById(R.id.textView2);
String name = getIntent().getStringExtra("name");
enteredName.setText("Happy Birthday " +name);
}
public void displayMessage(View view) {
}
}
现在,当按下显示消息按钮时,我想停止在第一个活动中播放的音乐。或者我可以用其他任何方式来做吗,比如为具有启动和停止方法的 Musicplayer 创建一个通用函数,并且我可以在任何活动中开始或停止音乐时调用它们?
解决方案
我可以看到两个选项:
- 制作
MediaPlayer
静态对象。 - 考虑实施单一活动方法。您将有两个片段并
ViewModel
在其中共享您可以访问MediaPlayer
。
推荐阅读
- sql - 即使某些节点不存在,也将所有 XML 导入 SQL 表
- html - 在另一个网站上使用 YouTube 视频 URL 是一种良好的网页设计实践吗?
- ios - Swift 4可解码解析数组中的json数据
- oracle - Oracle Apex - 如何在 Centos 7 上使用 APEXExport 18.1 导出所有应用程序
- android - 如果目录不存在,则 Firebase 错误消息
- arrays - Excel中计算两个数组相减的结果是否超过某个值
- ios - CoreAnimation:[EAGLContext renderbufferStorage:fromDrawable:] 是从非主线程调用的
- asp.net-mvc - razor actionLink 中的 asp.net mvc 可选参数
- css - 媒体查询确定 html 元素的大小?
- c# - EF 如何使用 .include() 和使用存储库模式查询更多实体