繁体   English   中英

如何使用CheckBox或从Android中的一项活动切换到另一项活动来打开或关闭一个特定的音频文件?

[英]How can I turn one specific audio file on or off with CheckBox or toggle button from one activity to another in android?

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class Settings_Menu extends Activity {
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings_menu);

    TurnSoundOff();
}

private void TurnSoundOff() { 
    final CheckBox TurnSoundOff= (CheckBox) findViewById(R.id.StartupsoundoffBox);
    TurnSoundOff.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (TurnSoundOff.isChecked()){
                mp = MediaPlayer.create(MainActivity.class, R.raw.soundfile); //errors at .create since I can't use a class
                mp.stop();
            }else{
                mp = MediaPlayer.create(MainActivity.class, R.raw.soundfile);
                mp.start();
            }
        }});
}

}

这是我的代码,我只是试图从打开应用程序时关闭或打开指定的音频文件。 我在另一个活动中有复选框或切换按钮。 我正在使用媒体播放器,以及一些Android编码的新功能,感谢您的阅读。 我通过点击溢出来设置设置动作,然后点击设置按钮进入活动状态,并且当从设置活动中单击检查时,我希望音频关闭或在MainActivity.xml中重新打开。 再次感谢您的阅读和事先帮助。 由于无法使用类,因此它在.create处出错

您必须使用共享首选项来执行此操作。 这非常简单..而不是进行活动,而是创建首选项屏幕..请按照下列步骤..:-

1)转到资源文件夹。 2)创建一个名为“ xml”的新文件夹。 3)在创建的xml文件夹中,创建一个名为“ prefs.xml”的xml文件。

在那个sdd下面的代码..:

 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

<CheckBoxPreference
    android:defaultValue="false"
    android:key="music"
    android:summary="Tick to listen the music"
    android:title="Intro Music" >
</CheckBoxPreference>
</PreferenceScreen> 

现在转到播放歌曲的活动。

  ourSong = MediaPlayer.create(Splash.this, R.raw.splash_sound);

    SharedPreferences getPrefs = PreferenceManager
            .getDefaultSharedPreferences(getBaseContext());
    boolean music = getPrefs.getBoolean("music", true);
    if (music == true)
        ourSong.start();

    Thread timer = new Thread() {
        public void run() {
            try {
                sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {

            }
        }
    };
    timer.start();

此线程用于您的活动的计时器。.如果您不希望任何计时器删除该线程.. sleep(****)中的值是以毫秒为单位的时间。

添加此功能还可以在更改活动后停止播放歌曲。

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
    ourSong.release();
}

要获取溢出菜单,请执行以下操作:-1)创建一个名为menu的新文件夹2)创建一个xml文件..添加以下代码。

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:title="Preferences"
    android:id="@+id/preferences" />
<item android:title="Exit"
    android:id="@+id/exit" />
</menu>

在您的活动中添加以下代码..以便可以调用prefernece

@Override
public boolean onCreateOptionsMenu(android.view.Menu menu) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu);
    MenuInflater blowUp = getMenuInflater();
    blowUp.inflate(R.menu.cool_menu, menu);
    return true;
}

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId()) {

    case R.id.preferences:
        Intent b = new Intent("com.example.code.PREFS");
                    //instead of 'com.example.code' write your package name 
        startActivity(b);
        break;
    case R.id.exit:
        finish();
        break;
    }
    return false;
}

最后创建一个名为Prefs的类,并添加以下代码。

import android.os.Bundle;
import android.preference.PreferenceActivity;

   public class Prefs extends PreferenceActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.prefs);
}

}

最后,在清单中添加该类。

 <activity
        android:name="com.example.code.Prefs"
        android:label="Preferences" >
        <intent-filter>
            <action android:name="com.example.code.PREFS" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

您的动作名称应与您在onMenuItemSelected()的意图中提到的名称相同...这可以解决问题... :)和平...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM