数据存储 SharedPreferences 的应用之音乐播放,点击返回后再次进入该界面,仍显示上次关闭前的状态

来源:互联网 发布:端口扫描器怎么用 编辑:程序博客网 时间:2024/06/05 09:31
Activity_main.xml
只需添加一个TextView
 
MainActivity.java
package com.example.musicplay;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.view.KeyEvent;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {private TextView textview;private Music music;private boolean musicState=false;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textview=(TextView) this.findViewById(R.id.musicState);
        music=new Music(this);                //第二次打开时仍保持第一次关闭前的状态        SharedPreferences sharedPreferences=getSharedPreferences("PlayMusic",MODE_PRIVATE);        musicState=sharedPreferences.getBoolean("musicState", false);        if(musicState){        textview.setText("当前音乐状态:开");music.playMusic();        }else{textview.setText("当前音乐状态:关");}            }    //按键弹起事件    @Override    public boolean onKeyUp(int keyCode, KeyEvent event) {        switch (keyCode) {case KeyEvent.KEYCODE_DPAD_UP://点击箭头上的按钮textview.setText("当前音乐状态:开");musicState=true;music.playMusic();break;case KeyEvent.KEYCODE_DPAD_DOWN://点击下textview.setText("当前音乐状态:关");musicState=false;music.freeMusic();break;default:break;}    return super.onKeyUp(keyCode, event);    }            //按键按下事件    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        //退出应用程序时保存数据        if(keyCode==KeyEvent.KEYCODE_BACK){//点击返回        //第一个参数是保存的文件名,以xml形式保存    /*点击右上角DDOM,选择File Explorer,找到/data/data目录下对应的shared_prefs文件夹,     * 找到PlayMusic.xml文件*/    SharedPreferences preferences=getSharedPreferences("PlayMusic",Context.MODE_PRIVATE );    //获得编辑对象    Editor editor=preferences.edit();        //添加值    editor.putBoolean("musicState",musicState);//以键值对的形式存储    //保存    editor.commit();    if(musicState){    music.freeMusic();    }    finish();    }    return super.onKeyDown(keyCode, event);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    }
Music.javapackage com.example.musicplay;import java.io.IOException;import android.content.Context;import android.media.MediaPlayer;public class Music {private MediaPlayer musicPlay=null;private Context mContext=null;public Music(Context context){mContext=context;}//播放音乐public void playMusic(){//查找音乐源musicPlay=MediaPlayer.create(mContext, R.raw.start);//使音乐循环播放musicPlay.setLooping(true);try{musicPlay.prepare();}catch(IllegalStateException ex){ex.printStackTrace();}catch(IOException e){e.printStackTrace();}musicPlay.start();}//关闭并且释放资源public void freeMusic(){if(musicPlay!=null){musicPlay.stop();musicPlay.release();}}}


原创粉丝点击