【问题标题】:implement music with SharedPreferences in android在 android 中使用 SharedPreferences 实现音乐
【发布时间】:2013-05-13 02:08:29
【问题描述】:

我正在用 android 构建一个应用程序,我现在有三个课程,一个 Main、一个 Music 和一个 Setting。我正在尝试将音乐放入我的应用程序中,这样当我退出应用程序时它就会停止。我已经完成了那部分。

我在设置类中还有一个切换按钮,用于控制音乐的开/关,我正在使用 SharedPreferences 让应用程序记住音乐是关闭还是打开。当我进入应用程序并停留在那里时,一切正常,关闭状态真的关闭了音乐,打开状态打开了她,但问题是当我退出并重新进入主类时再次开始播放音乐。有没有办法检查主类中是否选中了切换按钮?我没有找到任何...

其他问题,手机静音时如何静音?我查看了此站点中的 switch 方法,但它没有用。任何帮助都会很棒!

这里是类:

主要-

public class Main extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Music.play(this, R.raw.pirates);
}

public void setting_onclick(View view) {
       Intent i = new Intent("net.lirazarviv.Setting");
       startActivity(i);
   }

@Override
  protected void onPause() {
    if (this.isFinishing()){ //basically BACK was pressed from this activity
      Music.stoping();

    }
    Context context = getApplicationContext();
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
    if (!taskInfo.isEmpty()) {
      ComponentName topActivity = taskInfo.get(0).topActivity; 
      if (!topActivity.getPackageName().equals(context.getPackageName())) {
        Music.stoping();
      }
    }
    super.onPause();
  }
}

音乐-

public class Music {
private static MediaPlayer mp = null;

public static void play(Context context, int resource) {
         mp = MediaPlayer.create(context, resource);
         mp.setLooping(true);
         mp.start();
      }

public static void stop(Context context) { 
      if (mp != null) {
         mp.stop();
         mp.pause();
         mp.release();
         mp = null;
      }
   }


public static void playing() {
        mp.start();
}

public static void stoping() {
         mp.pause();

}
}

设置-

public class Setting extends Activity {
ToggleButton Button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_setting);
    addListenerOnButton();
    loadPrefs();
}

public void addListenerOnButton() {

    Button = (ToggleButton) findViewById(R.id.MusicIconSelector);
    Button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                Music.stoping();
                savePrefs("Button",true);
            }
            else { 
                Music.playing();
                savePrefs("Button",false);
            }
        }
    });
}

private void loadPrefs() {
            SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
            boolean cbValue = sp.getBoolean("Button", false);
            if(cbValue){
                Button.setChecked(true);
            }else{
                Button.setChecked(false);
            }
        }


private void savePrefs(String key, boolean value) {
            SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
            Editor edit = sp.edit();
            edit.putBoolean(key, value);
            edit.commit();
        }

}

【问题讨论】:

    标签: android sharedpreferences togglebutton audio-player android-music-player


    【解决方案1】:

    您可以使用Context.getSharedPreferences,而不是使用PreferenceManager.getDefaultSharedPreferences。通过使用它,您可以从任何组件读取写入相同的共享首选项。举例

    SharedPreferences sp = getSharedPreferences(name, MODE_PRIVATE);
    

    您可以在任何活动中通过name 访问共享偏好。

    【讨论】:

    • 如何从主要活动访问共享首选项?我没有得到那部分..
    • 我尝试将其添加到主类:SharedPreferences sp = getSharedPreferences("ButtonData", MODE_PRIVATE); boolean cbValue = sp.getBoolean("ButtonData", false); if(cbValue){ Toast.makeText(getApplicationContext(), "静音模式", Toast.LENGTH_SHORT).show(); }else{ Music.play(this, R.raw.pirates); Toast.makeText(getApplicationContext(), "音乐模式", Toast.LENGTH_SHORT).show();但是现在当我处于静音模式时,设置类不起作用,而当我处于音乐模式时它会..
    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多