- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
大家好,我的应用程序启动时会播放声音。我想让人们可以选择在主 Activity 设置屏幕上将其静音。
******使用给定的答案进行编辑******所以我在我的主要 Activity 中创建了一个设置方法,它现在启动一个名为 Main2Activity 的新 Activity ,一旦我让它正常工作,这将是我的设置 Activity 。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menuitem, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.Settings:
///No longer inflates settings xml.. Starts new settings activity instead
startactivity(new Intent(MainActivity.this,Main2Activity.class))
break;
}
return super.onOptionsItemSelected(item);
}
接下来我有我的媒体播放器类
public class harropMediaplayer {
MediaPlayer mp;
String media;
public harropMediaplayer(String media){
this.media = media;
}
public void plysound() {
///My media player is now stored globally as suggested
mp = App_Objects.mp;
String j =
media.toString();
Log.i("Url", j);
try {
mp.setDataSource(j);
} catch (IOException e) {
e.printStackTrace();
}
try {
mp.prepare();
} catch (IOException e) {
e.printStackTrace();
}
Log.i("Sound playing", "Ok");
mp.start();
}
public void stopplying(){
mp.stop();
mp.release();
}
正如给出的答案中所建议的那样,我现在很生气,因此可以使用名为 App_Objects 的约束类来访问媒体播放器。
public class App_Objects {
//This is where i store my media player
public static MediaPlayer mp = new MediaPlayer();
}
接下来是我的新 SettingsActivity 替换我的膨胀 View
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
final CheckBox btnradio = findViewById(R.id.btnmute);
SharedPreferences sharedpreferences = getSharedPreferences("myPreference", Context.MODE_PRIVATE);
final SharedPreferences.Editor editor = sharedpreferences.edit();
btnradio.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (btnradio.isChecked()){
editor.putBoolean("soundMute", b);
editor.apply();
Log.i( "onCheckedChanged: ","Activated");
}
else {
editor.clear();
editor.apply();
Log.i("onCheckChanged: ","Deactivated");
}
}
});
}
最后是我的飞溅 Activity ,其中启动声音通过 firebase url 播放,我再次添加了下面给出的答案。包括静音的方法
setContentView(R.layout.activity_splash__screen);
database = FirebaseDatabase.getInstance();
reference = database.getReference().child("tvthemetunes");
getthemetune();
}
public void getthemetune() {
Log.i ("Url Grab ", "Started");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i("Url Grab", "Searching database");
long childrenCount = dataSnapshot.getChildrenCount();
int count = (int) childrenCount;
int randomNumber = new Random().nextInt(count);
//Your random themeTune will be stored here
for(DataSnapshot snap : dataSnapshot.getChildren())
{
int i = 0;
if(i == randomNumber)
{
Themetune = snap.getValue(String.class);
try {
mp = new harropMediaplayer(Themetune);
((TextView) findViewById(R.id.version)).setText("" + getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
ImageView view = findViewById(R.id.splash);
ImageView view1 = findViewById(R.id.rain);
Animation animFadeIn = AnimationUtils.loadAnimation(Splash_Screen.this, R.anim.fadein);
animFadeIn.reset();
mp.plysound();
///HERE IS WHERE I CALL MY NEW METHOD
volumeSetting();
view1.clearAnimation();
view1.startAnimation(animFadeIn);
RotateAnimation anim = new RotateAnimation(0.0f,
360.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//Setup anim with desired properties
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.RELATIVE_TO_SELF);
//Repeat animation indefinitely
anim.setDuration(1200); //Put desired duration per anim cycle here, in milliseconds
//Start animation
view.startAnimation(anim);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
int secondsDelayed = 2;
new Handler().postDelayed(new Runnable() {
public void run() {
startActivity(new Intent(Splash_Screen.this,
MainActivity.class));
finish();
mp.stopplying();
}
}, secondsDelayed * 2000);
break;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
private void volumeSetting(){
////MY NEW VOLUME MUTE METHOD INCLUDING THE FETCH SHARED PREF
SharedPreferences sharedpreferences = getSharedPreferences("myPreference", Context.MODE_PRIVATE);
boolean bnSoundMute = sharedpreferences.getBoolean("soundMute",true);
if(bnSoundMute){
App_Objects.mp.setVolume(0,0); // for Mute
}else{
App_Objects.mp.setVolume(1,1);// for Unmute or full volume
}
}
}
但是现在声音接缝被静音了。从一开始,如果我转到我的设置 Activity 并单击静音启动复选框,然后重新启动应用程序。该应用程序崩溃,在我的控制台中给我致命一击
AndroidRuntime: FATAL EXCEPTION: main
Process: h20music.p9p.harrop99.H20DroidApp_Amazon, PID: 2549
java.lang.IllegalStateException
at android.media.MediaPlayer.nativeSetDataSource(Native Method)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1078)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1039)
at h20music.p9p.harrop99.H20DroidApp_Amazon.harropMediaplayer.plysound(harropMediaplayer.java:29)
at h20music.p9p.harrop99.H20DroidApp_Amazon.Splash_Screen$1.onDataChange(Splash_Screen.java:84)
at com.google.android.gms.internal.zzeeq.zza(Unknown Source)
at com.google.android.gms.internal.zzegl.zzbwe(Unknown Source)
at com.google.android.gms.internal.zzegr.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
最佳答案
我知道你想做什么。您可以通过使用声明媒体播放器静态来实现。下面是实现此目的的一种方法,您可以很好地构建此代码。我没有详细写代码。
创建AppConstants
类并定义MediaPlayer
静态的。
public class AppConstants{
public static MediaPlayer mp = new MediaPlayer();
}
创建 SettingActivity
Activity 类,您可以在其中为 soundMute 选项设置 sharedpreference 值 true/false。
public class SettingActivity{
SharedPreferences sharedpreferences = getSharedPreferences("myPreference", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
btnradio.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
editor.putBoolean("soundMute", b);
editor.apply();
}
});
}
创建 SplashActivity
Activity 类,您可以在其中读取 sharedpreference 以决定媒体播放器是否静音。
public class SplashActivity{
SharedPreferences sharedpreferences = getSharedPreferences("myPreference", Context.MODE_PRIVATE);
boolean bnSoundMute = sharedpreferences.getBoolean("soundMute",true);
if(bnSoundMute){
AppConstants.mp.setVolume(0,0); // for Mute
}else{
AppConstants.mp.setVolume(1,1); // for Unmute or full volume
}
try {
AppConstants.mp.prepare();
} catch (IOException e) {
e.printStackTrace();
}
AppConstants.mp.start();
}
关于java - 如何使用共享首选项使媒体静音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321696/
是否有一些系统通知可供我订阅,以便在用户切换响铃/静音按钮时收到通知?我还想知道苹果是否提供了一些“系统通知列表”。我花了一个小时搜索这个但失败了。 最佳答案 没有办法找出这一点。苹果在回应一些请求时
我用 a-videosphere 制作了一个 a-scene。我尝试使用按钮启用/禁用声音,但有些想法不起作用?这是我的代码: var gargamel = 0; function
我正在寻找可以检测并让我知道1分钟的wav文件是否包含声音的实用程序/代码? 换句话说,如果它可以检测到wav文件中任何位置的静默持续时间(如果存在),则也可以达到目的。 SOX是否为此支持任何命令?
我想知道是否可以只使特定 窗口静音。例如,我打开了 Firefox 和另外两个窗口。我想将与 Firefox 相关的所有内容静音,但不想关闭计算机的全部声音。 这可能吗?如果可以,如何实现? 最佳答案
我不知道如何处理我的 JavaScript 中的静音/取消静音按钮,我已经处理这个问题好几个小时了!基本上我的静音按钮可以正常工作,它可以使视频静音,我现在正试图让同一个按钮取消视频静音。有任何想法吗
我正在尝试将 AVCaptureSession 的音频静音和取消静音。开始 session 后,我可以启用和禁用音频连接,但是一旦我播放视频,所有音频部分都会被推回视频的前面,只留下视频的结尾没有声音
我有一组 php/html 页面,其中包含当鼠标悬停在其上时会播放声音的按钮。现在我希望当用户单击另一个按钮时,它会使网站的所有页面静音或将它们置于声音中,具体取决于声音是否已打开。 我已经有一个 h
我正在使用 AudioServicesPlaySystemSoundWithCompletion 播放系统声音,并使用 AVAudioPlayer 播放自定义声音。 为什么打开静音开关会播放声音?我已
我正在使用名为 ExoPlayer 的 Google 新 MediaPlayer,但找不到静音的方法 有没有一种简单的方法可以在 Google ExoPlayer 上将音轨静音?还是改变音量? 最佳答
我收到了大量关于零时长和弦的 music21 警告: WARNING: midi chord with zero duration will be treated as grace 我尝试用以下内容覆
我正在尝试在后台启动端口转发,同时抑制所有输出。这是我尝试过的: kubectl port-forward pod-name 1234:1234 > /dev/null 2>&1 & 然而,当我发起连
我想继续录音,但音频已静音。我是 不是 希望暂停音频。 我现在的替代方法是暂停音频,加入静音填充,继续录音,但如果有更简单的方法,那就太好了。 最佳答案 我也遇到过这个问题,经过长时间的研究,我得到了
在我的 iPhone 应用程序中,我想要静音和取消静音 MPMoviePlayerController。我进行了很多搜索,但无法成功。是否可以在 MPMoviePlayer Controller 中将
我已经看到了确保应用程序遵循静音开关的技术,但是是否可以使用 SDK 将 iPhone 设置为静音(任何应用程序都不会发出声音)? 最佳答案 没有。 使用官方 SDK 开发的应用程序无法更改(并且在大
我要播放以下背景音乐: NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/bgMusic.mp3", [[NSBu
我希望仅为我的 WPF 应用程序静音,并让整个混音器保持用户设置的状态。 我可以使用以下代码使系统范围内的声音静音/取消静音。 但是我注意到当我的应用程序正在运行并且正在播放声音时,我的应用程序会出现
所以我有一个 iframe,其“src”指向一些音乐的 URL。 iframe 被隐藏并自动播放音乐。如何添加一个按钮来使音乐静音? 请注意,音乐来自外部网站。而且 URL 并不指向特定文件。它只是
我正在制作一个小型 Java 应用程序,该应用程序需要以隐藏模式打开 Firefox 浏览器并将其静音。 正如您通过下面的代码看到的,我找到了一种隐藏浏览器的方法。然而,我在弄清楚如何使浏览器静音以及
我正在为我的应用程序使用 SpeechRecognizer API,每次启动时,它都会播放“哔”声。 我想知道如何将它静音,这样我就可以自己实现一个。 谢谢。 最佳答案 如果您使用按钮来激活和停用识别
我正在创建我的第一个应用程序。我有一个使用以下代码在后台播放音乐的应用程序: var backgroundMusicPlayer = AVAudioPlayer() override func vie
我是一名优秀的程序员,十分优秀!