
[英]how to turn on and off background music through switchpreferences?
[英]How to on and off background music using Switch?
我目前正在开发一个移动应用程序,作为我课程的最终项目。 我的问题是我无法使用开关控制我在应用程序中应用的背景音乐。 我使用该服务在我的整个应用程序中播放它。 当我单击主页按钮时,我也遇到了问题。 音乐还在播放。 我搜索了很多教程,但它仍然不起作用。
我希望你能帮助我解决我的问题。 始终保持安全,我的开发人员。
后台服务
package com.example.biowit;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class BgMusicService extends Service {
MediaPlayer player;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.bg_music);
player.setLooping(true);
player.setVolume(100, 100);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
player.stop();
player.release();
}
@Override
public void onLowMemory() {
super.onLowMemory();
}
}
主屏幕(背景音乐开始播放的地方)
package com.example.biowit;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import com.google.firebase.auth.FirebaseAuth;
public class HomeScreen extends AppCompatActivity {
Button Chap1_btn, Achieve_btn, HowToPlay_btn, LogOut_btn, Settings_btn;
FirebaseAuth home_FbAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
Chap1_btn = findViewById(R.id.btn_Chap1);
Achieve_btn = findViewById(R.id.btn_Achievements);
HowToPlay_btn = findViewById(R.id.btn_HowToPlay);
LogOut_btn = findViewById(R.id.btn_Logout);
Settings_btn = findViewById(R.id.btn_Settings);
home_FbAuth = FirebaseAuth.getInstance();
startService(new Intent(this, BgMusicService.class));
Chap1_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent open_Chap1 = new Intent(getApplicationContext(), LessonScreen.class);
startActivity(open_Chap1);
}
});
LogOut_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
home_FbAuth.signOut();
startActivity(new Intent(getApplicationContext(), LoginScreen.class));
finish();
}
});
Settings_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent open_Settings = new Intent(getApplicationContext(), Settings.class);
startActivity(open_Settings);
}
});
}
}
设置(找到开关的位置)
package com.example.biowit;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class Settings extends AppCompatActivity {
Button Back_ST_btn, AboutUs_btn, VerEmail_btn, Res_Pass_btn, Con_Res_btn, Cancel_Res_btn;
TextView VerEmail_txt;
EditText NewPass_input, CoNewPass_input;
FirebaseAuth set_FbAuth;
FirebaseUser set_FbUser;
String respass_set, conpass_set;
Switch Music_swch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
AboutUs_btn = findViewById(R.id.btn_AboutUs);
Back_ST_btn = findViewById(R.id.btn_ST_Back);
Res_Pass_btn = findViewById(R.id.btn_Reset_Pass);
Con_Res_btn = findViewById(R.id.btn_Confirm_Reset);
Cancel_Res_btn = findViewById(R.id.btn_Cancel_Reset);
NewPass_input = findViewById(R.id.txt_New_Pass);
CoNewPass_input = findViewById(R.id.txt_CoNew_Pass);
VerEmail_btn = findViewById(R.id.btn_Verify_Email);
VerEmail_txt = findViewById(R.id.lbl_Verify_Email);
Music_swch = findViewById(R.id.swch_ST_Music);
set_FbAuth = FirebaseAuth.getInstance();
set_FbUser = set_FbAuth.getCurrentUser();
String pass_regex = "^(?=.*[a-zA-Z])(?=.*[@#$%^&+=])(?=\\S+$).{6,}$";
Music_swch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(Music_swch.isChecked()){
//???
}
else{
//???
}
}
});
//When email is not verified, a message and button will appear.
if (!set_FbAuth.getCurrentUser().isEmailVerified()){
VerEmail_txt.setVisibility(View.VISIBLE);
VerEmail_btn.setVisibility(View.VISIBLE);
}
//When the "Verify Now" button is clicked, a verification email will be sent to the user's email address.
VerEmail_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//send verificaton email
set_FbAuth.getCurrentUser().sendEmailVerification().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
Toast.makeText(getApplicationContext(),"Verification Email sent.", Toast.LENGTH_LONG).show();
VerEmail_txt.setVisibility(View.GONE);
VerEmail_btn.setVisibility(View.GONE);
}
});
}
});
Res_Pass_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // opens reset password.
NewPass_input.setVisibility(View.VISIBLE);
CoNewPass_input.setVisibility(View.VISIBLE);
Con_Res_btn.setVisibility(View.VISIBLE);
Cancel_Res_btn.setVisibility(View.VISIBLE);
}
});
Cancel_Res_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // cancels reset password.
NewPass_input.setVisibility(View.GONE);
CoNewPass_input.setVisibility(View.GONE);
Con_Res_btn.setVisibility(View.INVISIBLE);
Cancel_Res_btn.setVisibility(View.INVISIBLE);
}
});
Con_Res_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
respass_set = NewPass_input.getText().toString();
conpass_set = CoNewPass_input.getText().toString();
if(respass_set.isEmpty()){ // if new password field is empty, error message will be shown.
NewPass_input.setError("This field cannot be empty.");
return;
}
if(respass_set.matches(pass_regex)){ // if new password is weak and not follows the certain , this error message will be shown.
NewPass_input.setError("Password is too weak. Password must contain at least 6 characters with at least one digit and a special character.");
return;
}
if(conpass_set.isEmpty()){ // if confirm password field is empty, error message will be shown.
CoNewPass_input.setError("This field cannot be empty.");
return;
}
if (!conpass_set.equals(respass_set)){ // if the confirm password is not equals to new password, error message will be shown.
CoNewPass_input.setError("Password does not match.");
return;
}
set_FbUser.updatePassword(respass_set).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
Toast.makeText(getApplicationContext(),"New Password saved.", Toast.LENGTH_LONG).show();
NewPass_input.setVisibility(View.GONE);
CoNewPass_input.setVisibility(View.GONE);
Con_Res_btn.setVisibility(View.INVISIBLE);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
});
AboutUs_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // opens "About Us" screen.
startActivity(new Intent(getApplicationContext(), AboutUsScreen.class));
}
});
Back_ST_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // returns to previous screen.
finish();
}
});
}
public void PlayBackgroundSound(View view){
startService(new Intent(this, BgMusicService.class));
}
}
没有遇到错误日志。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.