如何使用CheckBox打开或关闭一个特定的音频文件,或者在android中将切换按钮从一个活动切换到另一个活动?

时间:2014-06-22 08:29:59

标签: javascript android audio

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 个答案:

答案 0 :(得分:0)

您必须使用共享首选项执行此操作。这很简单..而不是让活动成为偏好屏幕..请按照以下步骤...: -

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();

这个线程用于活动的计时器..如果你想要任何计时器删除线程..睡眠中的值(****)是以毫秒为单位的时间。

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

@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>

在你的行为中添加以下代码。所以可以称之为

@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);
}

}

最后在manifest ..代码中添加该类..

 <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()中的意图中提到的相同... 这样就可以了...... :)和平......