Android——MusicPlayer 思路分享
一.布局
- main.xml:主布局背景
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"android:id="@android:id/tabhost"<LinearLayout<TabWidgetandroid:id="@android:id/tabs"<FrameLayoutandroid:id="@android:id/tabcontent"</LinearLayout> </TabHost>
- music_item.xml:单个音乐条
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<ImageView android:id="@+id/music_item_image" // 音乐小图标android:background="@drawable/item"<LinearLayout<TextViewandroid:id="@+id/music_item_name" // 音乐名android:text="依然爱你"<TextViewandroid:id="@+id/music_item_singer" // 歌手名android:text="王力宏"</LinearLayout><TextViewandroid:id="@+id/music_item_time" // 音乐时长android:text="03:42" </LinearLayout>
- listmusic.xml:音乐列表
<LinearLayout android:background="@drawable/listbg"<ListViewandroid:id="@+id/listAllMusic"</ListView> </LinearLayout>
- artist.xml:艺术家列表
<LinearLayout android:background="@drawable/listbg1"<ListViewandroid:id="@+id/artistListView"</ListView> </LinearLayout>
- albums.xml:专辑列表
<LinearLayout android:background="@drawable/listbg"<ListViewandroid:id="@+id/albumListView"</ListView> </LinearLayout>
- songs.xml:最近播放列表
<LinearLayout android:background="@drawable/listbg1"<ListViewandroid:id="@+id/listView1"</ListView> </LinearLayout>
- music.xml:单首音乐播放界面布局
- 模块一:歌曲名+歌手+单曲+音量调节+随机
- 模块二:自定义视图,展示歌词,java代码动态添加
- 模块三:音乐时长+音乐进度+各种播放按钮
<LinearLayout android:background="@drawable/bg"<RelativeLayout<cn.com.karl.util.LrcView // 引用自定义视图 实现歌词显示android:id="@+id/LyricShow"android:layout_below="@+id/linearLayout1"android:text="显示歌词"<LinearLayoutandroid:id="@+id/linearLayout1" // 音乐标题、歌手、音量调节组合android:background="@drawable/appbackground"<TextViewandroid:id="@+id/music_name" // 音乐名字android:text="依然爱你"<TextViewandroid:id="@+id/music_singer" // 歌手android:text="王力宏" /><LinearLayout<ImageButtonandroid:id="@+id/music_loop" // 单曲循环标志<SeekBarandroid:id="@+id/music_volume"// 音量调节进度条android:max="100" // 最大值android:progress="50" // 当前值android:progressDrawable="@drawable/seekbar_img" // 进度条背景android:thumb="@drawable/media_player_progress_button" /> // 进度条按钮<ImageButtonandroid:id="@+id/music_random"// 随机播放android:background="@drawable/play_random_sel" /></LinearLayout></LinearLayout><LinearLayoutandroid:background="@drawable/button"<LinearLayout<TextViewandroid:id="@+id/music_start_time" // 音乐开始时间android:text="00:00" /><SeekBarandroid:id="@+id/music_seekBar" // 音乐进度条<TextViewandroid:id="@+id/music_end_time" // 音乐结束时间android:text="03:20" /></LinearLayout><LinearLayout<ImageButtonandroid:id="@+id/music_lasted" // 第一首音乐 android:src="@drawable/latest1" /><ImageButtonandroid:id="@+id/music_rewind" // 前一首android:src="@drawable/rewind" /><ImageButtonandroid:id="@+id/music_play" // 播放音乐android:src="@drawable/play1" /><ImageButtonandroid:id="@+id/music_foward" // 下一首android:src="@drawable/foward" /><ImageButtonandroid:id="@+id/music_next" // 最后一首音乐android:src="@drawable/next1" /></LinearLayout></LinearLayout></RelativeLayout> </LinearLayout>
二.活动
- MainActivity.java:布局填充了app主界面,导航其他活动
public class MainActivity extends TabActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE); // 去掉标题栏(APP名字)this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 应用全屏显示setContentView(R.layout.main);Resources res = getResources(); // 读取静态资源文件TabHost tabHost = getTabHost(); // 声明选项卡TabHost.TabSpec spec; // 声明选项卡内容Intent intent; intent = new Intent().setClass(this, ListActivity.class);spec = tabHost.newTabSpec("音乐").setIndicator("音乐",res.getDrawable(R.drawable.item)).setContent(intent);tabHost.addTab(spec); // 将内容添加到选项卡中//....tabHost.setCurrentTab(0); // 会自动加载第一个选项卡,为了避免此现象而设置的代码}}
- ListActivity.java:实现音乐列表填充、跳转到音乐播放界面的功能
public class ListActivity extends Activity {private ListView listView; // 声明音乐列表@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(R.layout.listmusic);listView= (ListView) this.findViewById(R.id.listAllMusic); // 获取音乐列表组件List<Music> listMusic=MusicList.getMusicData(getApplicationContext()); // 从本机上下文获取音乐资源MusicAdapter adapter=new MusicAdapter(this, listMusic); // 实例化音乐列表适配器 listView.setAdapter(adapter); // 填充音乐列表listView.setOnItemClickListener(new OnItemClickListener() { // 为音乐列表选项点击事件添加侦听@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// 创建Intent对象,参数分别为上下文,要跳转的 Activity类Intent intent = new Intent(ListActivity.this,MusicActivity.class);intent.putExtra("id", arg2); // 将要传递的值附加到Intent对象startActivity(intent); // 启动该Intent对象,实现跳转}});}}
- ArtistsActivity.java:实现艺术家列表填充、跳转到音乐播放界面的功能
public class ArtistsActivity extends Activity {// ... // 实例化艺术家列表适配器 ArtistsAdapter adapter=new ArtistsAdapter(this, MusicList.getMusicData(this)); artistListView.setAdapter(adapter); // 填充音艺术家列表artistListView.setOnItemClickListener(new OnItemClickListener() { @Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {Intent intent = new Intent(ArtistsActivity.this,MusicActivity.class); // 上下文,要跳转的 Activity类intent.putExtra("id", arg2); // 将要传递的值附加到Intent对象startActivity(intent); // 实现跳转}});}}
- AlbumsActivity.java:实现专辑列表填充、跳转到音乐播放界面的功能
public class AlbumsActivity extends Activity {// ...实例化专辑列表适配器AlbumsAdapter adapter=new AlbumsAdapter(this, MusicList.getMusicData(this)); albumListView.setAdapter(adapter);albumListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// 实现专辑列表页面跳转到音乐播放界面Intent intent = new Intent(AlbumsActivity.this,MusicActivity.class);intent.putExtra("id", arg2);startActivity(intent); }});}}
- SongsActivity.java:实现最近播放列表填充、跳转到音乐播放界面的功能
- MusicList.java:遍历本地数据库,获取.mp3音乐列表
- 查询 SD卡上的音乐文件信息:
- ContentResolver的查询接口:
Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
- Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数
- Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息
- selection: 指定查询条件
- selectionArgs:参数selection里有 ?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null
- SortOrder:指定查询结果的排列顺序
- 返回所有在外部存储卡上的音乐文件的信息:
- Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
- 得到cursor后,调用 Cursor的相关方法具体的音乐信息,见下实例:
public class MusicList {public static List<Music> getMusicData(Context context) {List<Music> musicList = new ArrayList<Music>();ContentResolver cr = context.getContentResolver();if (cr != null) {Cursor cursor = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null,null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);if (null == cursor) { return null;}if (cursor.moveToFirst()) { // 如果有歌曲就开始遍历歌曲对象do {Music m = new Music(); // 实例化歌曲对象 String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); //获取标题String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)); // 获取作者if ("<unknown>".equals(singer)) {singer = "未知艺术家";}String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)); // 获取专辑名long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE)); //获取歌曲大小long time = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); // 获取歌曲时长String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); // 获取歌曲文件路径String name = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); // 获取歌曲文件的全名称String sbr = name.substring(name.length() - 3,if (sbr.equals("mp3")) { m.setTitle(title);// ...m.setName(name);musicList.add(m); // 将符合要求的音乐对象添加到音乐列表}} while (cursor.moveToNext());}}return musicList; // 返回音乐列表}}
三.适配器
- AlbumsAdapter.java,用于填充内容,其他同理
public class AlbumsAdapter extends BaseAdapter { // 专辑列表适配器private List<Music> listMusic;private Context context;public AlbumsAdapter(Context context,List<Music> listMusic){this.context=context;this.listMusic=listMusic;}public void setListItem(List<Music> listMusic){ this.listMusic=listMusic;}@Overridepublic int getCount() {return listMusic.size();}@Overridepublic Object getItem(int arg0) {return listMusic.get(arg0);}@Overridepublic long getItemId(int position) {return position;}@Override // 获得指定位置要显示的View,convertView:列表视图public View getView(int position, View convertView, ViewGroup parent) {if(convertView==null){convertView=LayoutInflater.from(context).inflate(R.layout.music_item, null);}Music m=listMusic.get(position);// 音乐名TextView textMusicName=(TextView) convertView.findViewById(R.id.music_item_name);textMusicName.setText(m.getSinger());// 歌手TextView textMusicSinger=(TextView) convertView.findViewById(R.id.music_item_singer);textMusicSinger.setText(m.getName());/* // 持续时间TextView textMusicTime=(TextView) convertView.findViewById(R.id.music_item_time);textMusicTime.setText(toTime((int)m.getTime()));*/return convertView;}// 音乐时长格式化public String toTime(int time) {time /= 1000;int minute = time / 60;int hour = minute / 60;int second = time % 60;minute %= 60;return String.format("%02d:%02d", minute, second); // 将分、秒至少格式化为两位十进制数} }
- MusicService.java
public class MusicService extends Service implements Runnable {//...@Overridepublic IBinder onBind(Intent arg0) {return null;}@Overridepublic void onCreate() {lists = MusicList.getMusicData(getApplicationContext()); // 从本机获取音乐列表SeekBarBroadcastReceiver receiver = new SeekBarBroadcastReceiver(); IntentFilter filter = new IntentFilter("cn.com.karl.seekBar");this.registerReceiver(receiver, filter);new Thread(this).start();super.onCreate();}@Overridepublic void onStart(Intent intent, int startId) {String play = intent.getStringExtra("play");_id = intent.getIntExtra("id", 1);if (play.equals("play")) { // 暂停播放if (null != player) {player.release(); // 释放媒体资源player = null;}playMusic(_id);} else if (play.equals("pause")) { // 暂停if (null != player) {player.pause();}} else if (play.equals("playing")) { // 开始播放if (player != null) {player.start();} else {playMusic(_id);}} else if (play.equals("replaying")) { // 重新播放} else if (play.equals("first")) { // 播放第一首int id = intent.getIntExtra("id", 0);playMusic(id);} else if (play.equals("rewind")) { // 播放前一首int id = intent.getIntExtra("id", 0);playMusic(id);} else if (play.equals("forward")) { // 播放下一首int id = intent.getIntExtra("id", 0);playMusic(id);} else if (play.equals("last")) { // 播放最后一首int id = intent.getIntExtra("id", 0);playMusic(id);}}private void playMusic(int id) {mLrcProcess = new LrcProcess(); // 初始化歌词mLrcProcess.readLRC(lists.get(_id).getUrl()); // 读取歌词文件lrcList = mLrcProcess.getLrcContent(); // 传回处理后的歌词文件MusicActivity.lrc_view.setSentenceEntities(lrcList);MusicActivity.lrc_view.setAnimation(AnimationUtils.loadAnimation(MusicService.this, R.anim.alpha_z)); // 切换带动画显示歌词mHandler.post(mRunnable); // 启动线程if (null != player) { // 如果存在媒体资源管理者player.release(); // 释放资源player = null;}if (id >= lists.size() - 1) { //计算正在播放的音乐位置_id = lists.size() - 1;} else if (id <= 0) {_id = 0;}Music m = lists.get(_id);String url = m.getUrl();Uri myUri = Uri.parse(url);player = new MediaPlayer(); // 重新实例化媒体管理者player.reset(); // 重置音乐管理者player.setAudioStreamType(AudioManager.STREAM_MUSIC);try {player.setDataSource(getApplicationContext(), myUri);player.prepare();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (SecurityException e) {}player.start(); // 开始播放}private class SeekBarBroadcastReceiver extends BroadcastReceiver { // 设置进度条广播接收器@Overridepublic void onReceive(Context context, Intent intent) {int seekBarPosition = intent.getIntExtra("seekBarPosition", 0);player.seekTo(seekBarPosition * player.getDuration() / 100);player.start();}}@Overridepublic void run() {while (isRun) {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}if (null != player) {int position = player.getCurrentPosition();int total = player.getDuration();Intent intent = new Intent("cn.com.karl.progress");intent.putExtra("position", position);intent.putExtra("total", total);sendBroadcast(intent);}if (null != player) {if (player.isPlaying()) {playing = true;} else {playing = false;}}}}Handler mHandler = new Handler();Runnable mRunnable = new Runnable() { // 歌词滚动线程@Overridepublic void run() {MusicActivity.lrc_view.SetIndex(LrcIndex());MusicActivity.lrc_view.invalidate();mHandler.postDelayed(mRunnable, 100);}};private List<LrcContent> lrcList = new ArrayList<LrcContent>(); // 创建歌词对象private int index = 0; // 初始化歌词检索值private int CurrentTime = 0; // 初始化歌曲播放时间的变量private int CountTime = 0; // 初始化歌曲总时间的变量// 同步歌词处理类public int LrcIndex() {if (player.isPlaying()) {CurrentTime = player.getCurrentPosition(); // 获得歌曲播放在哪的时间CountTime = player.getDuration(); // 获得歌曲总时间长度}if (CurrentTime < CountTime) {for (int i = 0; i < lrcList.size(); i++) {if (i < lrcList.size() - 1) {if (CurrentTime < lrcList.get(i).getLrc_time() && i == 0) {index = i;}if (CurrentTime > lrcList.get(i).getLrc_time()&& CurrentTime < lrcList.get(i + 1).getLrc_time()) {index = i;}}if (i == lrcList.size() - 1&& CurrentTime > lrcList.get(i).getLrc_time()) {index = i;}}}return index;}}
- MusicActivity.java:
public class MusicActivity extends Activity implements SensorEventListener{// 声明组件private TextView textName; // 歌名private TextView textSinger; // 作者private SeekBar seekBarVolume; // 音量进度条private ImageButton imageBtnLoop; // 单曲循环按钮private ImageButton imageBtnRandom; // 随机播放按钮public static LrcView lrc_view; // 歌词视图private SeekBar seekBar1; // 音乐进度条private List<Music> lists; // 音乐列表private Boolean isPlaying = false; // 现在播放状态public static Boolean isLoop=true; // 是否循环播放@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE); // 取消标题栏this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.music);textName = (TextView) this.findViewById(R.id.music_name);seekBar1 = (SeekBar) this.findViewById(R.id.music_seekBar);textEndTime = (TextView) this.findViewById(R.id.music_end_time);imageBtnRewind = (ImageButton) this.findViewById(R.id.music_rewind);@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,progress, AudioManager.FLAG_ALLOW_RINGER_MODES);}});seekBar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { // 设置音乐进度条改变监听器@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {seekBar1.setProgress(seekBar.getProgress()); Intent intent=new Intent("cn.com.karl.seekBar");intent.putExtra("seekBarPosition", seekBar.getProgress());sendBroadcast(intent);}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}Music m = lists.get(id);textName.setText(m.getTitle());textSinger.setText(m.getSinger());textEndTime.setText(toTime((int) m.getTime()));imageBtnPlay.setImageResource(R.drawable.pause1);Intent intent = new Intent(MusicActivity.this, MusicService.class);intent.putExtra("play", "play");seekBar1.invalidate();}}private class MyListener implements OnClickListener { // 按钮点击事件监听@Overridepublic void onClick(View v) {if (v == imageBtnLast) { // 第一首按钮id = 0;Music m = lists.get(0);textName.setText(m.getTitle());textSinger.setText(m.getSinger());textEndTime.setText(toTime((int) m.getTime()));imageBtnPlay.setImageResource(R.drawable.pause1);Intent intent = new Intent(MusicActivity.this,MusicService.class);intent.putExtra("play", "first");intent.putExtra("id", id);ce(R.drawable.play1);replaying=false;} else { // 如果没有播放Intent intent = new Intent(MusicActivity.this,MusicService.class);intent.putExtra("play", "playing");intent.putExtra("id", id);startService(intent);isPlaying = true;imageBtnPlay.setImageResource(R.drawable.pause1);replaying=true;}} else if (v == imageBtnForward) { // 下一首按钮int id=MusicService._id+1;if(id>=lists.size()-1){ // 判断是否是列表的最后一首歌曲id=lists.size()-1;}else if(id<=0){id=0;}Music m = lists.get(id);textName.setText(m.getTitle());textSinger.setText(m.getSinger());textEndTime.setText(toTime((int) m.getTime()));imageBtnPlay.setImageResource(R.drawable.pause1);Intent intent = new Intent(MusicActivity.this,MusicService.class);} else if (v == imageBtnLoop) { // 如果点击了是否单曲循环那个按钮if (isLoop == true) { // 顺序播放 imageBtnLoop.setBackgroundResource(R.drawable.play_loop_spec);isLoop = false;} else { // 单曲循环imageBtnLoop.setBackgroundResource(R.drawable.play_loop_sel);isLoop = true;}} }
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- RxJava 五:场景模拟
目录1.计算一段时间内的平均值2.优化搜索联想功能3.优化多次重复点击4.RxJava + Retrofit + OkHttp5.页面轮询请求6.接口重新请求(retry)7.本地验证输入有效性8.优先加载本地缓存,再读取网络数据方案一:concat方案二:concatEager方案三:merge方案四:publish + m…...
2024/4/24 7:00:43 - openstack理论,面试常用
openstack组件 nova 用于在计算级别管理虚拟机,并在计算或管理程序级别执行其他计算任务 neutron 为虚拟机,计算和控制节点管理网络功能 keystone 为所云用户和opensatck云服务提供身份认证服务 Horizon 用于提供图形用户界面 cinder 用于提供块存储功能,通常来说来共同为控…...
2024/4/16 21:14:59 - Docker weave 安装-容器跨主机访问-简洁的步骤
简介 weave是docker容器跨主机访问的其中一种方案,weave的优势是简单使用、报文自动加密、可穿透防火墙。 官方地址:https://www.weave.works/oss/net/ 本文安装环境以centos7为例,假设有两个主机,ip分别是192.168.0.10和192.168.0.11 开始安装 192.168.0.10 主机安装 wget…...
2024/4/15 7:21:41 - 干货 汽车金融如何进行贷后管理?
在车贷的风险控制中,很多人比较熟悉贷前审核,认为把控好贷前审核即是风险可控,其实不然,从车贷风险管理整个生命周期来看,优质的车贷金融风控不仅需要做好贷前审核,贷后管理也是相当重要的。 贷后管理基本分5个部分: 1、档案管理 2、保险管理 3、客服管理 4、解除抵押 5…...
2024/4/16 21:13:41 - bc: Tendermint: 共识概览
fix pic of https://blog.csdn.net/simple_the_best/article/details/77198837 content: Tendermint 是一个易于理解,大部分操作为异步的 BFT 共识协议。下图是一个简单的状态机,它展示了协议遵循的规则:协议中的参与者叫着 “验证人”(validator)。他们轮流对交易区块进行…...
2024/4/15 7:21:38 - 为什么要前后端分离?有什么优缺点?
一、前戏前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚…...
2024/4/24 7:00:48 - LoRa有应用场景吗?
不同的技术特征会带来不同的应用场景,LoRa最大的价值点在于,易部署与自主性,总体来说,LoRa更适合企业用户对自主性、快速性要求高,对连续覆盖、深度覆盖要求高的场景,如园区、工厂、厂矿、农场、物流集散地、综合体、人居社区等环境。“能够生存下来的物种,并不是那些最…...
2024/4/24 7:00:44 - 【整理之路二】百度地图的路径规划和调用本机地图导航
推荐看完之后注意一下最后的东西 一、细说百度地图的路径规划 路径规划主要有这么几种 1.公交路径规划 1.1 市内公交规划(暂时不在这里说) 1.2 跨市/省公交规划// 导入头文件#import <BaiduMapAPI_Search/BMKSearchComponent.h>#import <BaiduMapAPI_Map/BMKPolylin…...
2024/4/24 7:00:43 - 自定义一个回到顶部Vue指令
CSS样式: <style>* {margin: 0;padding: 0;}html, body, #app {height: 100%;}#app {display: flex;flex-direction: column;overflow: hidden;}section {flex: 1;overflow-y: auto;}li {height: 28px;line-height: 28px;border-bottom: 1px solid #000000;}header, foo…...
2024/4/24 7:00:39 - 积分兑换商城运营时需注意的6大细节,你清楚吗?
随着互联网的快速发展,积分兑换商城也变得越来越常见,很多企业也都开始逐渐意识到积分兑换商城在客户运营方面的重要性,但是知易行难,很多企业由于疏于管理、商品单一、售后不及时等问题,让本该是盘活客户的积分,逐渐成为“留也不是不留也不是”的烫手山芋,究其根本,还…...
2024/4/24 7:00:38 - windows10环境下mysql8的安装与配置
1.下载mysql8 下载地址: https://dev.mysql.com/downloads/mysql/8.0.html2.解压及配置 将下载的zip文件解压到想要安装的目录下编辑my.ini文件如下: [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装…...
2024/4/24 7:00:37 - 斯坦福四足机器人运动学逆解(笔记4/作业4)
一.运动学正/逆解概念 1.运动学正解:已知舵机/电机转角,求足端坐标。 2.运动学逆解:已知足端坐标,求舵机/电机转角。 二.足端轨迹规划 摆线方程: { x=r*(t-sint) y=r*(1-cost) [其中r为圆的半径,t是圆的半径所经过的弧度(滚动角),当t由0变到2π时,动点就画出了摆线的一支…...
2024/4/24 7:00:42 - vuepress入门详解(四)vuepress 基本配置
vuepress 基本配置 ::: tip 本页所列的选项仅对默认主题生效。如果你在使用一个自定义主题,选项可能会有不同。 ::: 首页配置 首页配置文件是doc目录下的README.md文件,以下是一个如何使用的例子:--- home: true heroImage: /hero.png heroText: Hero 标题 tagline: Hero 副…...
2024/4/24 7:00:41 - Vue中把对象中的数据给了某个变量,改变一个对象的值,另一个对象也变化的解决方案
在vue中的data数据中建立这两个对象 var salesOreder = new Vue({delimiters: [${, }], [想知道这里的作用解释请看这里](https://blog.csdn.net/qq_46124502/article/details/106326034)data(){return {objData1:{name:"zky"},objData2:""}}})此时把objD…...
2024/4/24 7:00:40 - 039 老师分糖果
例:幼儿园老师将糖果分成若干等份,让学生按任意次序领取,第1个领取的,得到1份加上剩余糖果的1/10;第2个领取的,得到2份加上剩余糖果的1/10;第3个领取的,得到3份加上剩余糖果的1/10;……依此类推。问共有多少个学生?老师共将糖果分成了多少等份? 分析:设一开始等分成…...
2024/4/24 7:00:33 - Vue-11-生命周期
一、知识点部分生命周期钩子 = 生命周期函数 = 生命周期事件 1.生命周期函数分为: 1.1创建期间: 1.1.1 beforeCreat 1.1.2 created 1.1.3 beforeMonute 1.1.4 monuted 1.2运行期间: 1.2.1beforeUpdate 1.2.2updated 1.3销毁期间: 1.31 beforeDestory 1.32 destoryed created阶…...
2024/4/24 7:00:35 - 利用GISTIC2.0整合队列CNV拷贝数变异分析结果
今天我们学习一个拷贝数变异的整合软件——GISTIC2。注意,这和软件本身并不做CNV calling,而是主要用于检测一组样品中显着扩增或缺失的基因组区域(明白一点说就是你需要提供一批样本中的每个样本的CNV检测结果,这个软件经过呼啦呼啦显著性计算会告诉你这一批样本中显著扩增…...
2024/5/2 14:25:20 - element+vue+echarts 实现视图转换和图例大小自适应
element+vue+echarts 实现视图转换和图例大小自适应本教程适合新手,大佬勿喷.第一次写博客,有不足之处,希望大家指出.示例图html由于要是视图大小自适应页面并随页面大小变化,所以一定要在页面上方写入样式 <head><title>通知列表</title><#include "…...
2024/5/2 6:00:14 - 稀疏数组(压缩算法)详解
稀疏数组(压缩算法)详解 稀疏数组逻辑框架 (该数组共有6行7列,有8个有效值)1.随机创建个二维数组 //1.创建一个二维数组11*11 int[][] array1 = new int[11][11];array1[1][2]=1; //设置第一行第二列的值为1array1[2][3]=5; //设置第二行第三列的值为52.输出原始的…...
2024/4/16 21:14:59 - qml退出应用
qml退出应用 Qt.quit() Qt.exit()...
2024/4/16 21:15:05
最新文章
- 数据结构--栈与队列【您的关注是我创作的动力!】
文章目录 栈什么是栈?栈的具体实现 队列什么是队列?队列的实现 栈 什么是栈? 栈也是顺序表的一种,栈的逻辑实现是先进后出(后进先出)就跟子弹夹一样。 具体逻辑就是它只允许在固定的一端进行数据的插入与…...
2024/5/4 5:00:52 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - promise.all方式使用
romise.all( ).then( ) 处理多个异步任务,且所有的异步任务都得到结果时的情况。 比如:用户点击按钮,会弹出一个弹出对话框,对话框中有两部分数据呈现,这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…...
2024/5/2 21:09:45 - Python语法总结:not(常出现错误)
0、not是什么 在python中not是逻辑判断词,用于布尔型True和False之前 a not Ture # a False b not False # b True1、not的用法 (1)判断语句 if not a:# 如果a是False,执行的语句(2)判断元素是否在…...
2024/5/2 5:16:56 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/3 23:10:03 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/4 2:59:34 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57