package com.example.musiccloud;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.recyclerview.widget.LinearLayoutManager;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.TextView;
import com.example.musiccloud.Room.BasicApp;
import com.example.musiccloud.Room.RecyclerView.HotList.HotViewAdapter;
import com.example.musiccloud.Room.RecyclerView.MusicList.MusicAdapter;
import com.example.musiccloud.Room.db.entity.Songs;
import com.example.musiccloud.databinding.ActivityMainBinding;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import org.json.JSONArray;
import org.json.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity implements MusicAdapter.CallBackValue{
/** 声明变量
* tv_total是歌曲时长
* appBarConfiguration是导航栏
* 通过Binding绑定视图,可以更轻松地编写可与视图交互
* */
private static TextView tv_total;
private AppBarConfiguration appBarConfiguration;
private ActivityMainBinding binding;
// 声明按钮
private Button btnPause, btnPlayUrl, btnStop, btnReplay;
// 进度条
private SeekBar skbProgress;
// 歌曲播放对象player
private Player player;
// 文本:当前播放的歌曲
private TextView tipsView;
// 音乐播放网络直链
private String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
// 通过binding视图绑定
setContentView(binding.getRoot());
// 设置自定义应用栏,这一步要有,不然会报空指针错误
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// 获取布局文件中的BottomNavigationView
BottomNavigationView navView = findViewById(R.id.nav_view);
// 导航栏设置跳转
appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_music, R.id.navigation_user)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);
// 歌曲时长
tv_total = (TextView) findViewById(R.id.tv_total);
// 播放歌曲按钮
btnPlayUrl = (Button) this.findViewById(R.id.btnPlayUrl);
// 按钮监听
btnPlayUrl.setOnClickListener(new ClickEvent());
// 暂停歌曲按钮
btnPause = (Button) this.findViewById(R.id.btnPause);
// 按钮监听
btnPause.setOnClickListener(new ClickEvent());
// 停止歌曲按钮
btnStop = (Button) this.findViewById(R.id.btnStop);
// 按钮监听
btnStop.setOnClickListener(new ClickEvent());
// 重播歌曲按钮
btnReplay = (Button) this.findViewById(R.id.btnReplay);
// 按钮监听
btnReplay.setOnClickListener(new ClickEvent());
// 当前播放的歌曲
tipsView=(TextView) this.findViewById(R.id.tips);
// 进度条
skbProgress = (SeekBar) this.findViewById(R.id.skbProgress);
// 设置进度条监听Event
skbProgress.setOnSeekBarChangeListener(new SeekBarChangeEvent());
/** 初始化音乐播放网络直链url
* 这里放了两条直链接,都是红日.mp3
* 如果有一个直链失效了,可以用另一条试试。
* */
// url = "https://pro-xhb-audio.oss-cn-hangzhou.aliyuncs.com/f4f0de6a-e371-4369-b290-76620eb672eb.mp3" ;
url = "https://s1.ananas.chaoxing.com/audio/c3/27/9c/70db7fac8387deaee37c4f7d0e2a51af/audio.mp3";
// 初始化 player对象
player = new Player(url,skbProgress,tv_total);
}
// 通过接口动态获取播放音乐直链urlValue 和 音乐名称nameValue
public void SendMessageValue(String urlValue , String nameValue ) {
url = urlValue;
// 当前播放音乐改变
tipsView.setText("开始播放 "+ nameValue + "....");
// player对象重新设置播放链接
player.setVideoUrl(urlValue);
// 开始播放
player.play();
}
// 点击监听事件Event
class ClickEvent implements View.OnClickListener {
@Override
public void onClick(View arg0) {
// 下面分别是按下在暂停键、播放键、停止键、重播键的事件
if (arg0 == btnPause) {
boolean pause=player.pause();
if (pause) {
btnPause.setText("继续");
tipsView.setText("暂停播放...");
}else{
btnPause.setText("暂停");
tipsView.setText("继续播放...");
}
} else if (arg0 == btnPlayUrl) {
player.play();
tipsView.setText("开始播放...");
} else if (arg0 == btnStop) {
player.stop();
tipsView.setText("停止播放...");
} else if (arg0==btnReplay) {
player.replay();
tipsView.setText("重新播放...");
}
}
}
// 进度条监听事件
class SeekBarChangeEvent implements SeekBar.OnSeekBarChangeListener {
int progress;
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// 原本是(progress/seekBar.getMax())*player.mediaPlayer.getDuration()
this.progress = progress * player.mediaPlayer.getDuration()
/ seekBar.getMax();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// seekTo()的参数是相对与歌曲时间的数字,而不是与seekBar.getMax()相对的数字
player.mediaPlayer.seekTo(progress);
}
}
//根据mAppBarConfiguration的配置执行导航的 返回(navigate Up) 操作
@Override
public boolean onSupportNavigateUp() {
NavController navController =
Navigation.findNavController(this, R.id.nav_host_fragment);
return NavigationUI.navigateUp(navController, appBarConfiguration)
|| super.onSupportNavigateUp();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
云音乐盒子APP源码,基于Java开发.zip
共139个文件
xml:40个
png:34个
java:31个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 43 浏览量
2022-10-27
19:13:03
上传
评论
收藏 8.28MB ZIP 举报
温馨提示
云音乐盒子APP源码,基于Java开发.zip
资源推荐
资源详情
资源评论
收起资源包目录
云音乐盒子APP源码,基于Java开发.zip (139个子文件)
gradlew.bat 3KB
.gitignore 225B
.gitignore 47B
.gitignore 6B
build.gradle 2KB
settings.gradle 515B
build.gradle 291B
gradlew 6KB
gradle-wrapper.jar 58KB
MainActivity.java 7KB
MusicAdapter.java 6KB
Player.java 6KB
HotListActivity.java 5KB
NewListActivity.java 5KB
VipListActivity.java 5KB
HomeFragment.java 4KB
MusicFragment.java 4KB
HotViewAdapter.java 3KB
MusicViewModel.java 3KB
NewViewAdapter.java 3KB
VipViewAdapter.java 3KB
AppExecutors.java 3KB
AddSong.java 3KB
MyDialog.java 3KB
MusicViewHolder.java 3KB
Music.java 2KB
HotViewHolder.java 2KB
VipViewHolder.java 2KB
NewViewHolder.java 2KB
FirstMvActivity.java 2KB
MusicDao.java 2KB
ThirdMvActivity.java 1KB
SecondMvActivity.java 1KB
AppDatabase.java 1KB
Songs.java 1017B
UserFragment.java 778B
ExampleInstrumentedTest.java 758B
BasicApp.java 685B
Converters.java 585B
ExampleUnitTest.java 383B
createdsongs.jpg 475KB
head.jpg 419KB
guyong.jpg 333KB
zhoujielun.jpg 201KB
yequ.jpg 185KB
rise.jpg 40KB
vipsongs.jpg 37KB
hotsongs.jpg 22KB
upsongs.jpg 21KB
newsongs.jpg 20KB
newsongs2.jpg 10KB
zhongwuyan.mp3 4.44MB
guyong2.png 1.26MB
vipsons2.png 277KB
music_bg.png 216KB
music.png 96KB
bg.png 54KB
hotsongs2.png 51KB
heart.png 16KB
cloud.png 12KB
mv.png 11KB
remusic.png 10KB
musiclist.png 9KB
leardboard.png 8KB
touming.png 2KB
ic_copyright_deep_orange_a700_24dp.png 2KB
stop.png 1KB
next.png 1KB
previous.png 1KB
ic_copyright_deep_orange_a700_24dp.png 1KB
play.png 1KB
pause.png 1KB
ic_copyright_deep_orange_a700_24dp.png 843B
ic_copyright_deep_orange_a700_24dp.png 621B
ic_account_balance_black_24dp.png 457B
ic_copyright_deep_orange_a700_24dp.png 420B
ic_account_balance_black_24dp.png 366B
ic_accessibility_black_24dp.png 353B
ic_account_balance_black_24dp.png 283B
ic_accessibility_black_24dp.png 279B
ic_account_balance_black_24dp.png 251B
re.png 203B
ic_accessibility_black_24dp.png 197B
ic_accessibility_black_24dp.png 187B
ic_account_balance_black_24dp.png 173B
ic_accessibility_black_24dp.png 132B
proguard-rules.pro 750B
gradle.properties 1KB
gradle-wrapper.properties 236B
ic_launcher_round.webp 8KB
ic_launcher_round.webp 6KB
ic_launcher_round.webp 4KB
ic_launcher.webp 4KB
ic_launcher_round.webp 3KB
ic_launcher.webp 3KB
ic_launcher.webp 2KB
ic_launcher_round.webp 2KB
ic_launcher.webp 1KB
ic_launcher.webp 982B
fragment_home.xml 10KB
共 139 条
- 1
- 2
资源评论
「已注销」
- 粉丝: 803
- 资源: 3611
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功