SP相关→SPUtils.java

本文介绍了一个用于Android平台的SP工具类,提供了丰富的API来简化SharedPreferences的使用,支持多种数据类型的存取操作,如String、int、long等,并能进行集合操作及数据查询。
 
   
  import android.content.Context;
  import android.content.SharedPreferences;
  import android.support.annotation.Nullable;
   
  import java.util.Map;
  import java.util.Set;
   
  /**
  * <pre>
  * author: Blankj
  * blog : http://blankj.com
  * time : 2016/8/2
  * desc : SP相关工具类
  * </pre>
  */
  public final class SPUtils {
   
  private SharedPreferences sp;
  private SharedPreferences.Editor editor;
   
  /**
  * SPUtils构造函数
  * <p>在Application中初始化</p>
  *
  * @param spName spName
  */
  public SPUtils(String spName) {
  sp = Utils.getContext().getSharedPreferences(spName, Context.MODE_PRIVATE);
  editor = sp.edit();
  editor.apply();
  }
   
  /**
  * SP中写入String类型value
  *
  * @param key 键
  * @param value 值
  */
  public void put(String key, @Nullable String value) {
  editor.putString(key, value).apply();
  }
   
  /**
  * SP中读取String
  *
  * @param key 键
  * @return 存在返回对应值,不存在返回默认值{@code null}
  */
  public String getString(String key) {
  return getString(key, null);
  }
   
  /**
  * SP中读取String
  *
  * @param key 键
  * @param defaultValue 默认值
  * @return 存在返回对应值,不存在返回默认值{@code defaultValue}
  */
  public String getString(String key, String defaultValue) {
  return sp.getString(key, defaultValue);
  }
   
  /**
  * SP中写入int类型value
  *
  * @param key 键
  * @param value 值
  */
  public void put(String key, int value) {
  editor.putInt(key, value).apply();
  }
   
  /**
  * SP中读取int
  *
  * @param key 键
  * @return 存在返回对应值,不存在返回默认值-1
  */
  public int getInt(String key) {
  return getInt(key, -1);
  }
   
  /**
  * SP中读取int
  *
  * @param key 键
  * @param defaultValue 默认值
  * @return 存在返回对应值,不存在返回默认值{@code defaultValue}
  */
  public int getInt(String key, int defaultValue) {
  return sp.getInt(key, defaultValue);
  }
   
  /**
  * SP中写入long类型value
  *
  * @param key 键
  * @param value 值
  */
  public void put(String key, long value) {
  editor.putLong(key, value).apply();
  }
   
  /**
  * SP中读取long
  *
  * @param key 键
  * @return 存在返回对应值,不存在返回默认值-1
  */
  public long getLong(String key) {
  return getLong(key, -1L);
  }
   
  /**
  * SP中读取long
  *
  * @param key 键
  * @param defaultValue 默认值
  * @return 存在返回对应值,不存在返回默认值{@code defaultValue}
  */
  public long getLong(String key, long defaultValue) {
  return sp.getLong(key, defaultValue);
  }
   
  /**
  * SP中写入float类型value
  *
  * @param key 键
  * @param value 值
  */
  public void put(String key, float value) {
  editor.putFloat(key, value).apply();
  }
   
  /**
  * SP中读取float
  *
  * @param key 键
  * @return 存在返回对应值,不存在返回默认值-1
  */
  public float getFloat(String key) {
  return getFloat(key, -1f);
  }
   
  /**
  * SP中读取float
  *
  * @param key 键
  * @param defaultValue 默认值
  * @return 存在返回对应值,不存在返回默认值{@code defaultValue}
  */
  public float getFloat(String key, float defaultValue) {
  return sp.getFloat(key, defaultValue);
  }
   
  /**
  * SP中写入boolean类型value
  *
  * @param key 键
  * @param value 值
  */
  public void put(String key, boolean value) {
  editor.putBoolean(key, value).apply();
  }
   
  /**
  * SP中读取boolean
  *
  * @param key 键
  * @return 存在返回对应值,不存在返回默认值{@code false}
  */
  public boolean getBoolean(String key) {
  return getBoolean(key, false);
  }
   
  /**
  * SP中读取boolean
  *
  * @param key 键
  * @param defaultValue 默认值
  * @return 存在返回对应值,不存在返回默认值{@code defaultValue}
  */
  public boolean getBoolean(String key, boolean defaultValue) {
  return sp.getBoolean(key, defaultValue);
  }
   
  /**
  * SP中写入String集合类型value
  *
  * @param key 键
  * @param values 值
  */
  public void put(String key, @Nullable Set<String> values) {
  editor.putStringSet(key, values).apply();
  }
   
  /**
  * SP中读取StringSet
  *
  * @param key 键
  * @return 存在返回对应值,不存在返回默认值{@code null}
  */
  public Set<String> getStringSet(String key) {
  return getStringSet(key, null);
  }
   
  /**
  * SP中读取StringSet
  *
  * @param key 键
  * @param defaultValue 默认值
  * @return 存在返回对应值,不存在返回默认值{@code defaultValue}
  */
  public Set<String> getStringSet(String key, @Nullable Set<String> defaultValue) {
  return sp.getStringSet(key, defaultValue);
  }
   
  /**
  * SP中获取所有键值对
  *
  * @return Map对象
  */
  public Map<String, ?> getAll() {
  return sp.getAll();
  }
   
  /**
  * SP中移除该key
  *
  * @param key 键
  */
  public void remove(String key) {
  editor.remove(key).apply();
  }
   
  /**
  * SP中是否存在该key
  *
  * @param key 键
  * @return {@code true}: 存在<br>{@code false}: 不存在
  */
  public boolean contains(String key) {
  return sp.contains(key);
  }
   
  /**
  * SP中清除所有数据
  */
  public void clear() {
  editor.clear().apply();
  }
  }
package com.weishitechsub.quanminchangKmianfei.utils; import com.hfd.common.net.JsonUtil; import com.hfd.common.net.Url; import com.hfd.common.util.SPUtils; import com.weishitechsub.quanminchangKmianfei.bean.SongBean; import java.util.ArrayList; import java.util.List; public class LocalData { private static LocalData localData; public static LocalData getInstance(){ if (localData ==null){ localData =new LocalData(); } return localData; } List<String> ZFLXList = new ArrayList<>(); public List<String> getZFLXList(){ ZFLXList.clear(); ZFLXList.add("住房"); ZFLXList.add("非住房"); return ZFLXList; } List<String> GRSDSList = new ArrayList<>(); public List<String> getGRSDSList(){ GRSDSList.clear(); for (int i = 1; i < 13; i++) { GRSDSList.add(String.valueOf(i)); } return GRSDSList; } List<String> ZXDKList = new ArrayList<>(); public List<String> getZXDKList(){ ZXDKList.clear(); ZXDKList.add("1年"); ZXDKList.add("2年"); ZXDKList.add("3年"); ZXDKList.add("4年"); ZXDKList.add("5年"); return ZXDKList; } List<String> FWTYPEList = new ArrayList<>(); public List<String> getFWTYPEList(){ FWTYPEList.clear(); FWTYPEList.add("高层"); FWTYPEList.add("小高层"); FWTYPEList.add("多层"); return FWTYPEList; } List<String> MFTYPEList = new ArrayList<>(); public List<String> getMFTYPEList(){ MFTYPEList.clear(); MFTYPEList.add("首套房"); MFTYPEList.add("二套房"); MFTYPEList.add("三套房及以上"); return MFTYPEList; } List<String> XINGZIList = new ArrayList<>(); public List<String> getXINGZIList(){ XINGZIList.clear(); XINGZIList.add("普通住宅"); XINGZIList.add("非普通住宅"); return XINGZIList; } List<String> MFJTList = new ArrayList<>(); public List<String> getMFJTIList(){ MFJTList.clear(); MFJTList.add("唯一住房"); MFJTList.add("非唯一住房"); return MFJTList; } List<String> FCZNXList = new ArrayList<>(); public List<String> getFCZNXList(){ FCZNXList.clear(); FCZNXList.add("2年以内"); // FCZNXList.add("2-5年(不含5年)"); // FCZNXList.add("5年及以上"); FCZNXList.add("2年以上"); return FCZNXList; } List<String> complaintTypeList = new ArrayList<>(); public List<String> getComplaintTypeList(){ complaintTypeList.clear(); complaintTypeList.add("虚假广告"); complaintTypeList.add("广告内容违规"); complaintTypeList.add("广告重复骚扰"); complaintTypeList.add("广告质量差"); complaintTypeList.add("不感兴趣"); return complaintTypeList; } // === 录制歌曲操作:K歌记录 === public List<SongBean> getSongList() { String songInfo = SPUtils.getParam(Url.songInfo, "").toString(); if (!songInfo.isEmpty()) { return JsonUtil.jsonToList(songInfo, SongBean.class); } return new ArrayList<>(); // 返回空列表避免 null } public void saveSongList(List<SongBean> list) { String json = JsonUtil.listToJson(list); SPUtils.setParam(Url.songInfo, json); } public void clearSongList() { saveSongList(new ArrayList<>()); // 清空即保存空列表 } // === 录制歌曲操作:清唱记录 === public List<SongBean> getOratoriList() { String oratoriInfo = SPUtils.getParam(Url.oratoriInfo, "").toString(); if (!oratoriInfo.isEmpty()) { return JsonUtil.jsonToList(oratoriInfo, SongBean.class); } return new ArrayList<>(); } public void saveOratoriList(List<SongBean> list) { String json = JsonUtil.listToJson(list); SPUtils.setParam(Url.oratoriInfo, json); } public void clearOratoriList() { saveOratoriList(new ArrayList<>()); } } Cannot resolve method 'listToJson' in 'JsonUtil'
最新发布
12-13
package com.weishitechsub.quanminchangKmianfei.utils; import com.hfd.common.net.JsonUtil; import com.hfd.common.net.Url; import com.hfd.common.util.SPUtils; import com.weishitechsub.quanminchangKmianfei.bean.SongBean; import java.util.ArrayList; import java.util.List; public class LocalData { private static LocalData localData; public static LocalData getInstance(){ if (localData ==null){ localData =new LocalData(); } return localData; } List<String> ZFLXList = new ArrayList<>(); public List<String> getZFLXList(){ ZFLXList.clear(); ZFLXList.add("住房"); ZFLXList.add("非住房"); return ZFLXList; } List<String> GRSDSList = new ArrayList<>(); public List<String> getGRSDSList(){ GRSDSList.clear(); for (int i = 1; i < 13; i++) { GRSDSList.add(String.valueOf(i)); } return GRSDSList; } List<String> ZXDKList = new ArrayList<>(); public List<String> getZXDKList(){ ZXDKList.clear(); ZXDKList.add("1年"); ZXDKList.add("2年"); ZXDKList.add("3年"); ZXDKList.add("4年"); ZXDKList.add("5年"); return ZXDKList; } List<String> FWTYPEList = new ArrayList<>(); public List<String> getFWTYPEList(){ FWTYPEList.clear(); FWTYPEList.add("高层"); FWTYPEList.add("小高层"); FWTYPEList.add("多层"); return FWTYPEList; } List<String> MFTYPEList = new ArrayList<>(); public List<String> getMFTYPEList(){ MFTYPEList.clear(); MFTYPEList.add("首套房"); MFTYPEList.add("二套房"); MFTYPEList.add("三套房及以上"); return MFTYPEList; } List<String> XINGZIList = new ArrayList<>(); public List<String> getXINGZIList(){ XINGZIList.clear(); XINGZIList.add("普通住宅"); XINGZIList.add("非普通住宅"); return XINGZIList; } List<String> MFJTList = new ArrayList<>(); public List<String> getMFJTIList(){ MFJTList.clear(); MFJTList.add("唯一住房"); MFJTList.add("非唯一住房"); return MFJTList; } List<String> FCZNXList = new ArrayList<>(); public List<String> getFCZNXList(){ FCZNXList.clear(); FCZNXList.add("2年以内"); // FCZNXList.add("2-5年(不含5年)"); // FCZNXList.add("5年及以上"); FCZNXList.add("2年以上"); return FCZNXList; } List<String> complaintTypeList = new ArrayList<>(); public List<String> getComplaintTypeList(){ complaintTypeList.clear(); complaintTypeList.add("虚假广告"); complaintTypeList.add("广告内容违规"); complaintTypeList.add("广告重复骚扰"); complaintTypeList.add("广告质量差"); complaintTypeList.add("不感兴趣"); return complaintTypeList; } //获取录制歌曲文件列表 public List<SongBean> getSongList(){ String songInfo = SPUtils.getParam(Url.songInfo,"").toString(); List<SongBean> songBeanList = null; if(!songInfo.isEmpty()){ songBeanList = JsonUtil.jsonToList(songInfo, SongBean.class); } return songBeanList; } //获取录制歌曲文件列表 public List<SongBean> getOratoriList(){ String songInfo = SPUtils.getParam(Url.oratoriInfo,"").toString(); List<SongBean> songBeanList = null; if(!songInfo.isEmpty()){ songBeanList = JsonUtil.jsonToList(songInfo, SongBean.class); } return songBeanList; } } 这个页面添加删除的方法
12-13
package com.weishitechsub.quanminchangKmianfei.fragment.lilv; import android.Manifest; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Intent; import android.content.res.ColorStateList; import android.graphics.Color; import android.media.MediaPlayer; import android.util.Log; import android.view.View; import android.widget.SeekBar; import androidx.annotation.NonNull; import com.hfd.common.net.JsonUtil; import com.hfd.common.net.Url; import com.hfd.common.util.SPUtils; import com.hfd.common.util.ToastUtil; import com.weishitechsub.quanminchangKmianfei.R; import com.weishitechsub.quanminchangKmianfei.adtakubase.activity.BaseBindActivity; import com.weishitechsub.quanminchangKmianfei.bean.AdRebackSet; import com.weishitechsub.quanminchangKmianfei.bean.CloseSong; import com.weishitechsub.quanminchangKmianfei.bean.MusicBean; import com.weishitechsub.quanminchangKmianfei.bean.ReRecord; import com.weishitechsub.quanminchangKmianfei.bean.SongBean; import com.weishitechsub.quanminchangKmianfei.databinding.ActivitySingEndBinding; import com.weishitechsub.quanminchangKmianfei.dialog.CommonDialog; import com.weishitechsub.quanminchangKmianfei.dialog.ModflyNameDialog; import com.weishitechsub.quanminchangKmianfei.dialog.PermissionDialog; import com.weishitechsub.quanminchangKmianfei.utils.LocalData; import com.weishitechsub.quanminchangKmianfei.utils.OnMultiClickListener; import com.weishitechsub.quanminchangKmianfei.utils.TimeUtil; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import pub.devrel.easypermissions.EasyPermissions; public class SingEndActivity extends BaseBindActivity<ActivitySingEndBinding> implements EasyPermissions.PermissionCallbacks{ private MediaPlayer mediaPlayer;//播音 private int recordTime = 0;//录制时间 private Thread thread; private boolean flag = false; ObjectAnimator animator; private static final String[] PERMS_CAMERA = new String[] {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; // 需要请求的权限数组 private static final int RC_CAMERA_PERM = 123; // 请求码,唯一标识 private String recordedAudioPath; private MusicBean.DataBean originalSong; @Override protected void init() { Intent intent = getIntent(); if (intent != null) { recordedAudioPath = intent.getStringExtra("recorded_audio_path"); originalSong = (MusicBean.DataBean) intent.getSerializableExtra("song_data"); } // 设置进度条的进度颜色 mBinding.seekBar.setProgressTintList(ColorStateList.valueOf(getColor(R.color.seekBar))); // 设置进度条的背景颜色 mBinding.seekBar.setProgressBackgroundTintList(ColorStateList.valueOf(Color.WHITE)); // 设置拇指的颜色 mBinding.seekBar.setThumbTintList(ColorStateList.valueOf(getColor(R.color.seekBar))); mediaPlayer = getMediaPlayer(); recordTime = mediaPlayer.getDuration(); // 获取时长,单位为毫秒 mBinding.textViewDuration.setText("/" + millisecondsToString(recordTime));//减1000缩小误差 // 设置拖动条的变化监听器,用于更新音乐播放进度和显示已经播放的时间以及还未播放的时间 mBinding.seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser && mediaPlayer != null) { mediaPlayer.seekTo(progress); // 用户拖动拖动条时更新播放进度 //playToggle.setImageResource(R.drawable.ic_pause); // 设置暂停图标 flag = false; // 重新启动更新进度条的线程 if (thread == null || !thread.isAlive()) { thread = new Thread(new SeekBarThread()); // 启动线程 thread.start(); } } // 更新已经播放的时间 mBinding.textViewProgress.setText(millisecondsToString(progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // 拖动条开始被用户触摸时触发的方法,这里可以暂停音乐播放 if (mediaPlayer != null && mediaPlayer.isPlaying()) { mediaPlayer.pause(); } } @Override public void onStopTrackingTouch(SeekBar seekBar) { // 拖动条停止被用户触摸时触发的方法,这里可以恢复音乐播放 if (mediaPlayer != null) { mediaPlayer.start(); mBinding.tvSing.setText("播放中"); mBinding.ivSing.setImageResource(R.mipmap.img_sing_ht); // 暂停动画 animator.resume(); } } }); animator = ObjectAnimator.ofFloat(mBinding.ivSong, "rotation", 0f, 360f); animator.setDuration(20000); // 设置动画时长 animator.setRepeatCount(ValueAnimator.INFINITE); // 设置动画重复次数为无限 animator.start(); EventBus.getDefault().register(this); setData(); setOnClick(); } public void setData() { getPermissions(); } public void setOnClick() { mBinding.tvBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mediaPlayer.pause(); mBinding.tvSing.setText("暂停"); mBinding.ivSing.setImageResource(R.mipmap.img_sing_ht); // 暂停动画 animator.pause(); CommonDialog commonDialog = new CommonDialog(SingEndActivity.this,"退出前是否保存录音?"); commonDialog.show(); commonDialog.setOnDialogClickListener(new CommonDialog.OnDialogClickListener() { @Override public void onSureClickListener() { List<SongBean> songBeanList = LocalData.getInstance().getSongList(); SongBean songBean = new SongBean(); songBean.setSongName(originalSong.getTitle()); songBean.setSingName(originalSong.getSinger()); songBean.setSingTime(millisecondsToString(recordTime)); songBean.setCreatTime(TimeUtil.getCurrentTime()); songBean.setSongFilePath(recordedAudioPath); songBean.setIcon(originalSong.getCover()); if(null == songBeanList){ songBeanList = new ArrayList<>(); } songBeanList.add(songBean); SPUtils.setParam(Url.songInfo, JsonUtil.toJson(songBeanList)); EventBus.getDefault().post(new CloseSong()); commonDialog.dismiss(); finish(); } @Override public void onQuitClickListener() { EventBus.getDefault().post(new CloseSong()); commonDialog.dismiss(); finish(); } }); } }); //重录 mBinding.tvReRecord.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { mediaPlayer.pause(); mBinding.tvSing.setText("暂停"); mBinding.ivSing.setImageResource(R.mipmap.img_sing_ht); // 暂停动画 animator.pause(); CommonDialog commonDialog = new CommonDialog(SingEndActivity.this,"重录后当前数据会被删除,是否重录"); commonDialog.show(); commonDialog.setOnDialogClickListener(new CommonDialog.OnDialogClickListener() { @Override public void onSureClickListener() { EventBus.getDefault().post(new ReRecord()); commonDialog.dismiss(); finish(); } @Override public void onQuitClickListener() { commonDialog.dismiss(); } }); } }); //播放中/暂停 mBinding.line.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(mBinding.tvSing.getText().toString().equals("播放中")){ mediaPlayer.pause(); mBinding.tvSing.setText("暂停"); mBinding.ivSing.setImageResource(R.mipmap.img_sing_ht); // 暂停动画 animator.pause(); }else{ mediaPlayer.start(); mBinding.tvSing.setText("播放中"); mBinding.ivSing.setImageResource(R.mipmap.img_sing_lz); // 暂停动画 animator.resume(); } } }); //保存 mBinding.tvSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mediaPlayer.pause(); mBinding.tvSing.setText("暂停"); mBinding.ivSing.setImageResource(R.mipmap.img_sing_ht); // 暂停动画 animator.pause(); ModflyNameDialog modflyNameDialog = new ModflyNameDialog(SingEndActivity.this); modflyNameDialog.show(); modflyNameDialog.setOnDialogClickListener(new ModflyNameDialog.OnDialogClickListener() { @Override public void onSureClickListener(String name) { if(name.isEmpty()){ ToastUtil.showShortToast("请输入文件名称"); }else{ List<SongBean> songBeanList = LocalData.getInstance().getSongList(); SongBean songBean = new SongBean(); songBean.setSongName(name); songBean.setSingName(originalSong.getSinger()); songBean.setSingTime(millisecondsToString(recordTime)); songBean.setCreatTime(TimeUtil.getCurrentTime()); songBean.setSongFilePath(recordedAudioPath); songBean.setIcon(originalSong.getCover()); if(null == songBeanList){ songBeanList = new ArrayList<>(); } songBeanList.add(songBean); SPUtils.setParam(Url.songInfo, JsonUtil.toJson(songBeanList)); EventBus.getDefault().post(new CloseSong()); modflyNameDialog.dismiss(); finish(); } } @Override public void onQuitClickListener() { modflyNameDialog.dismiss(); } }); } }); } private MediaPlayer getMediaPlayer(){ // 找到了对应的文件路径,创建MediaPlayer并设置数据源为本地文件 MediaPlayer mediaPlayer = new MediaPlayer(); try { //mediaPlayer.setDataSource(getActivity(), Uri.parse("file:///android_asset/大悲咒.mp3")); // 从assets目录获取文件描述符 //AssetFileDescriptor afd = getAssets().openFd("千千阙歌.mp3"); // 设置数据源 //mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); mediaPlayer.setDataSource(recordedAudioPath); mediaPlayer.prepare(); mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mediaPlayer.pause(); mBinding.tvSing.setText("暂停"); mBinding.ivSing.setImageResource(R.mipmap.img_sing_ht); // 暂停动画 animator.pause(); } }); return mediaPlayer; } catch (IOException e) { Log.e("MusicMetadataHelper", "Failed to get MP3 file", e); // 如果发生异常,返回 null return null; } } // 将格式化的时间字符串(00:00)转换为毫秒 private int timeToMilliseconds(String time) { // 拆分时间字符串为小时、分钟和秒 String[] parts = time.split(":"); int hours = 0, minutes = 0, seconds = 0; if (parts.length == 2) { minutes = Integer.parseInt(parts[0]); seconds = Integer.parseInt(parts[1]); } else if (parts.length == 3) { hours = Integer.parseInt(parts[0]); minutes = Integer.parseInt(parts[1]); seconds = Integer.parseInt(parts[2]); } // 将小时、分钟和秒转换为毫秒数 return hours * 3600000 + minutes * 60000 + seconds * 1000; } // 将毫秒转换为格式化的时间字符串(00:00) private String millisecondsToString(int milliseconds) { int seconds = (milliseconds / 1000) % 60; int minutes = (milliseconds / (1000 * 60)) % 60; return String.format("%02d:%02d", minutes, seconds); } // 自定义的线程 class SeekBarThread implements Runnable { @Override public void run() { while (!flag) { if (mediaPlayer != null) { try { if (mediaPlayer.isPlaying()) { // 将SeekBar位置设置到当前播放位置 int currentPosition = mediaPlayer.getCurrentPosition(); mBinding.seekBar.setProgress(currentPosition); // 更新已经播放的时间 runOnUiThread(new Runnable() { @Override public void run() { mBinding.textViewProgress.setText(millisecondsToString(currentPosition)); } }); } } catch (IllegalStateException e) { e.printStackTrace(); break; // 遇到异常,退出循环 } } try { // 每100毫秒更新一次位置 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); break; // 遇到异常,退出循环 } } } } /** * 检查并请求权限 */ private void getPermissions(){ // 检查并请求权限 if (!EasyPermissions.hasPermissions(SingEndActivity.this, PERMS_CAMERA)) { new PermissionDialog(SingEndActivity.this,"权限说明: 存储权限:获取该存储权限主要是为了读写录制的资源文件。若拒绝将无法使用唱K功能").show(); EasyPermissions.requestPermissions(SingEndActivity.this, "我们需要存储权限", RC_CAMERA_PERM, PERMS_CAMERA); } else { if (mediaPlayer != null) { Log.d("MediaPlayerInfo", "MediaPlayer 对象已获取:" + mediaPlayer); mBinding.seekBar.setMax(recordTime); mBinding.seekBar.setProgress(0); mediaPlayer.start(); flag = false; if (thread == null || !thread.isAlive()) { thread = new Thread(new SeekBarThread()); // 启动线程 thread.start(); } } else { Log.d("MediaPlayerInfo", "未能获取到 MediaPlayer 对象"); } } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // 把执行结果的操作给EasyPermissions EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } @Override public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) { getPermissions(); } @Override public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) { } @Override public void onDestroy() { flag = true; try { if (thread != null) { thread.join(); // 等待播放进度更新线程结束 } } catch (InterruptedException e) { e.printStackTrace(); } if (mediaPlayer != null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); } if (mediaPlayer != null) { mediaPlayer.release(); } EventBus.getDefault().unregister(this); super.onDestroy(); } @Override public void onBackPressed() { if(true){ mediaPlayer.pause(); mBinding.tvSing.setText("暂停"); mBinding.ivSing.setImageResource(R.mipmap.img_sing_ht); // 暂停动画 animator.pause(); CommonDialog commonDialog = new CommonDialog(SingEndActivity.this,"退出前是否保存录音?"); commonDialog.show(); commonDialog.setOnDialogClickListener(new CommonDialog.OnDialogClickListener() { @Override public void onSureClickListener() { // List<SongBean> songBeanList = LocalData.getInstance().getSongList(); // // SongBean songBean = new SongBean(); // songBean.setSongName(MainActivity.songBeans.get(index).getSongName()); // songBean.setSingName(MainActivity.songBeans.get(index).getSingName()); // songBean.setSingTime(millisecondsToString(recordTime)); // songBean.setCreatTime(TimeUtil.getCurrentTime()); // songBean.setSongFilePath(filePath); // // if(null == songBeanList){ // songBeanList = new ArrayList<>(); // } // songBeanList.add(songBean); // SPUtils.setParam(Url.songInfo, JsonUtil.toJson(songBeanList)); EventBus.getDefault().post(new CloseSong()); commonDialog.dismiss(); finish(); } @Override public void onQuitClickListener() { EventBus.getDefault().post(new CloseSong()); commonDialog.dismiss(); finish(); } }); }else{ super.onBackPressed(); } //super.onBackPressed(); } // 使用@Subscribe注解标记方法以监听事件 @Subscribe(threadMode = ThreadMode.MAIN,sticky = true) public void onEvent(AdRebackSet adRebackSet) { ModflyNameDialog modflyNameDialog = new ModflyNameDialog(SingEndActivity.this); modflyNameDialog.show(); modflyNameDialog.setOnDialogClickListener(new ModflyNameDialog.OnDialogClickListener() { @Override public void onSureClickListener(String name) { if(name.isEmpty()){ ToastUtil.showShortToast("请输入文件名称"); }else{ // List<SongBean> songBeanList = LocalData.getInstance().getSongList(); // // SongBean songBean = new SongBean(); // songBean.setSongName(name); // songBean.setSingName(MainActivity.songBeans.get(index).getSingName()); // songBean.setSingTime(millisecondsToString(recordTime)); // songBean.setCreatTime(TimeUtil.getCurrentTime()); // songBean.setSongFilePath(filePath); // songBean.setIcon(MainActivity.songBeans.get(index).getIcon()); // // if(null == songBeanList){ // songBeanList = new ArrayList<>(); // } // songBeanList.add(songBean); // SPUtils.setParam(Url.songInfo, JsonUtil.toJson(songBeanList)); // // EventBus.getDefault().post(new CloseSong()); modflyNameDialog.dismiss(); finish(); } } @Override public void onQuitClickListener() { modflyNameDialog.dismiss(); } }); } }package com.weishitechsub.quanminchangKmianfei.utils; import com.hfd.common.net.JsonUtil; import com.hfd.common.net.Url; import com.hfd.common.util.SPUtils; import com.weishitechsub.quanminchangKmianfei.bean.SongBean; import java.util.ArrayList; import java.util.List; public class LocalData { private static LocalData localData; public static LocalData getInstance(){ if (localData ==null){ localData =new LocalData(); } return localData; } List<String> ZFLXList = new ArrayList<>(); public List<String> getZFLXList(){ ZFLXList.clear(); ZFLXList.add("住房"); ZFLXList.add("非住房"); return ZFLXList; } List<String> GRSDSList = new ArrayList<>(); public List<String> getGRSDSList(){ GRSDSList.clear(); for (int i = 1; i < 13; i++) { GRSDSList.add(String.valueOf(i)); } return GRSDSList; } List<String> ZXDKList = new ArrayList<>(); public List<String> getZXDKList(){ ZXDKList.clear(); ZXDKList.add("1年"); ZXDKList.add("2年"); ZXDKList.add("3年"); ZXDKList.add("4年"); ZXDKList.add("5年"); return ZXDKList; } List<String> FWTYPEList = new ArrayList<>(); public List<String> getFWTYPEList(){ FWTYPEList.clear(); FWTYPEList.add("高层"); FWTYPEList.add("小高层"); FWTYPEList.add("多层"); return FWTYPEList; } List<String> MFTYPEList = new ArrayList<>(); public List<String> getMFTYPEList(){ MFTYPEList.clear(); MFTYPEList.add("首套房"); MFTYPEList.add("二套房"); MFTYPEList.add("三套房及以上"); return MFTYPEList; } List<String> XINGZIList = new ArrayList<>(); public List<String> getXINGZIList(){ XINGZIList.clear(); XINGZIList.add("普通住宅"); XINGZIList.add("非普通住宅"); return XINGZIList; } List<String> MFJTList = new ArrayList<>(); public List<String> getMFJTIList(){ MFJTList.clear(); MFJTList.add("唯一住房"); MFJTList.add("非唯一住房"); return MFJTList; } List<String> FCZNXList = new ArrayList<>(); public List<String> getFCZNXList(){ FCZNXList.clear(); FCZNXList.add("2年以内"); // FCZNXList.add("2-5年(不含5年)"); // FCZNXList.add("5年及以上"); FCZNXList.add("2年以上"); return FCZNXList; } List<String> complaintTypeList = new ArrayList<>(); public List<String> getComplaintTypeList(){ complaintTypeList.clear(); complaintTypeList.add("虚假广告"); complaintTypeList.add("广告内容违规"); complaintTypeList.add("广告重复骚扰"); complaintTypeList.add("广告质量差"); complaintTypeList.add("不感兴趣"); return complaintTypeList; } //获取录制歌曲文件列表 public List<SongBean> getSongList(){ String songInfo = SPUtils.getParam(Url.songInfo,"").toString(); List<SongBean> songBeanList = null; if(!songInfo.isEmpty()){ songBeanList = JsonUtil.jsonToList(songInfo, SongBean.class); } return songBeanList; } //获取录制歌曲文件列表 public List<SongBean> getOratoriList(){ String songInfo = SPUtils.getParam(Url.oratoriInfo,"").toString(); List<SongBean> songBeanList = null; if(!songInfo.isEmpty()){ songBeanList = JsonUtil.jsonToList(songInfo, SongBean.class); } return songBeanList; } } 这样写对吗
12-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值