安卓APP源码和报告——音乐播放器

院 系:专 业:题 目:科 目:学 生:指导教师:完成时间:

目 录

  1. 引言1

1.1 目的1

1.2 背景1

  1. 需求分析1

  2. 系统设计1

3.1总体设计1

3.2功能设计1

  1. 系统开发2

4.1源程序清单2

4.2功能实现2

  1. 系统测试2

5.1测试方法2

5.2测试实现2

5.3测试结果2

  1. 结论与心得2

  2. 参考文献3

  3. 引言
    1.1 目的
    该APP实现了播放音乐MV的功能,连接在包中导入数据库,可上传大量的音乐MV供使用者欣赏,使用前需要进行注册登录获取自己的账号密码,可直接从一个音乐MV跳转到下一个音乐MV,随意调整视频进度等功能。
    1.2 背景
    在人们繁忙的生活中,一天之余我们都需要休息,可以通过此款音乐播放器听音乐,播放音乐,看音乐MV,让人们生活得到放松。

  4. 需求分析
  5. 当人们疲惫时,可以通过听音乐缓解。
  6. 当人们闲暇时,可以听音乐放松心情。
  7. 当人们快乐时,可以听音乐一起快乐。
  8. 当人们悲伤时,可以听音乐疗伤。
  9. 当人们生气时,可以听音乐消气。
  10. 系统设计
    3.1总体设计
    1.基本的手机显示界面
    2.用户的注册
    3.用户登录
    4.用户进入音乐播放器
    5.点击列表中想要播放的音乐
    6.跳转到音乐MV界面播放
    7.用户可以暂停音乐,播放音乐,随意跳动进度条,上一首音乐,下一首音乐。
    3.2功能设计

安卓APP源码和报告——音乐播放器
  1. 系统开发

4.1源程序清单

1、工程配置文件

安卓APP源码和报告——音乐播放器

安卓APP源码和报告——音乐播放器
  1. 工程结构目录

安卓APP源码和报告——音乐播放器

1.

4.2功能实现

1.

  1. 数据库存储相关代码:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class MyDBHelper extends SQLiteOpenHelper {
private static final String DBNAME=”financial.db”;
private static final int VERSION=1;
public MyDBHelper(Context context) {

super(context, DBNAME, null, VERSION);
}

//1 创建数据库
@Override
public void onCreate(SQLiteDatabase db) {
//创建用户表
db.execSQL(“create table tb_userinfo(id integer primary key autoincrement,name varchar(10),pwd varchar(15),email varchar(50),phone varchar(11))”);

}

//2 升级数据库
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}

2.用户实现注册以及账号密码存储的相关代码:

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.videoplayer.R;
import com.example.videoplayer.db.MyDBHelper;

public class LoginActivity extends AppCompatActivity {
//1 定义对象
EditText et_name,et_pwd;
Button btn_newregister,btn_login;
MyDBHelper mhelper;
SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_login);
//2 绑定控件
initView();

//3 登录按钮功能的实现
btnLogin();

//4 新用户注册按钮功能的实现
btnNewRegister();
}

//2 绑定控件——————–代码
private void initView() {
et_name=findViewById(R.id. et_name_lg);
et_pwd=findViewById(R.id. et_pwd_lg);
btn_newregister=findViewById(R.id. bt_newregister_lg);
btn_login=findViewById(R.id. bt_login_lg);
mhelper=new MyDBHelper(LoginActivity.this);
db=mhelper.getWritableDatabase();
}

//3 登录按钮功能的实现—————————代码
private void btnLogin() {
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//首先:获取输入的用户名和密码
String inputname=et_name.getText().toString();
String inputpwd=et_pwd.getText().toString();
//其次:对获取的用户名和密码进行判断
if(inputname.equals(“”)||inputpwd.equals(“”)){ //用户名或密码为空
Toast. makeText(LoginActivity.this,”用户名或密码不能为空”,Toast. LENGTH_SHORT).show();
}else{ //用户名或密码不为空时,我们再对输入的正确性进行判断。
// 根据输入的用户名和密码从数据库中查询
Cursor cursor =db.rawQuery(“select * from tb_userinfo where name=? and pwd=?”,new String[]{inputname,inputpwd});
//根据查询到的结果进行判断
if (cursor.moveToNext()){ //查询到时
@SuppressLint(“Range”) String getname=cursor.getString(cursor.getColumnIndex(“name”));
@SuppressLint(“Range”) String getpwd=cursor.getString(cursor.getColumnIndex(“pwd”));
if(inputname.equalsIgnoreCase(getname)&&inputpwd.equalsIgnoreCase(getpwd)){
SharedPreferences.Editor editor=getSharedPreferences(“userinfo”,0).edit();
editor.putString(“username”,inputname);
editor.putString(“userpwd”,inputpwd);
editor.commit();
Toast. makeText(LoginActivity.this,”用户名和密码正确,欢迎登陆”,Toast. LENGTH_SHORT).show();
Intent intent=new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}else{ //没有查询到结果时
Toast. makeText(LoginActivity.this,”用户名或密码错误,请重新输入”,Toast. LENGTH_SHORT).show();
et_name.setText(“”);
et_pwd.setText(“”);
}
}
}
});

}

//4 新用户注册按钮功能的实现————————代码
private void btnNewRegister() {
btn_newregister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(intent);
finish();
}
});
}

}

3.运行后虚拟机显示相关代码:

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
button=findViewById(R.id. button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,VideoActivity.class);
startActivity(intent);
}
});
}
}

4.播放音乐MV相关代码:

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.VideoView;

public class PlayActivity extends AppCompatActivity {
//定义对象
private TextView my_videoname;
private VideoView my_videoview; //视频播放器
private MediaController mediaController; //媒体控制柄
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_play);
initView(); //控件初始化
initData(); //数据初始化
}

private void initView() {
my_videoname=findViewById(R.id. my_videoname);
my_videoview=findViewById(R.id. my_videoview);
mediaController=new MediaController(this);
}
private void initData() {
//1、获取从音乐列表传过来的视频名称和视频地址
String myvideoname=getIntent().getStringExtra(“videoname”);
String myvideourl=getIntent().getStringExtra(“videourl”);
//2、将视频名称显示在文本框中,将视频地址关联到播放器中
my_videoname.setText(myvideoname);
my_videoview.setVideoPath(myvideourl);
//视频播放器和媒体控制柄关联起来
my_videoview.setMediaController(mediaController);
//媒体控制柄和视频播放器关联起来
mediaController.setMediaPlayer(my_videoview);
//3、启动视频播放器播放视频
my_videoview.start();
}
}

5.数据库存储数据相关代码:

import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.videoplayer.R;
import com.example.videoplayer.db.MyDBHelper;

public class RegisterActivity extends AppCompatActivity {
//3定义对象
EditText et_name,et_pwd,et_email,et_phone;
Button btn_register,btn_cancel;
MyDBHelper mhelper; //创建一个数据库类文件
SQLiteDatabase db; //创建一个可以操作的数据库对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_register);

//4 绑定控件
initView();

//5 注册按钮功能的实现
btnRegister();

//6 取消按钮功能的实现
btnCancel();
}

//4 绑定控件——–代码
private void initView() {
et_name=findViewById(R.id. et_name_rg);
et_pwd=findViewById(R.id. et_pwd_rg);
et_email=findViewById(R.id. et_email_rg);
et_phone=findViewById(R.id. et_phone_rg);
btn_register=findViewById(R.id. bt_ok_rg);
btn_cancel=findViewById(R.id. bt_cancel_rg);
mhelper=new MyDBHelper(RegisterActivity.this);
db=mhelper.getWritableDatabase();
}

//5 注册按钮功能的实现——————–代码
private void btnRegister() {
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建一个对象,用来封装一行数据
ContentValues values=new ContentValues();
values.put(“name”,et_name.getText().toString()); //将输入的用户名放到name列
values.put(“pwd”,et_pwd.getText().toString()); //将输入的密码放到pwd列
values.put(“email”,et_email.getText().toString()); //将输入的邮箱放到email列
values.put(“phone”,et_phone.getText().toString()); //将输入的电话放到phone列

//将封装好的一行数据保存到数据库的tb_userinfo表中
db.insert(“tb_userinfo”,null,values);
Toast. makeText(RegisterActivity.this,”注册成功”,Toast. LENGTH_SHORT).show();
}
});

}

//6 取消按钮功能的实现——————-代码
private void btnCancel() {
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(RegisterActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
});
}

}

6.音乐MV传获参代码:

public class Video {
private String videoName;
private String videoUrl;

public String getVideoName() {
return videoName;
}

public String getVideoUrl() {
return videoUrl;
}

public Video(String videoName, String videoUrl) {
this.videoName = videoName;
this.videoUrl = videoUrl;
}
}

7.音乐获取MV名字和地址代码:

import cn.bmob.v3.BmobObject;
import cn.bmob.v3.datatype.BmobFile;

public class video_table extends BmobObject {
private String video_name;
private BmobFile video_url;

public String getVideo_name() {
return video_name;
}

public BmobFile getVideo_url() {
return video_url;
}
}

8.音乐列表基本显示代码:

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;

import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.FindListener;

public class VideoActivity extends AppCompatActivity {
//定义对象
Spinner spin1;
RecyclerView recyclerView;
List

9.联网获取音乐Mv代码:

import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class VideoAdapter extends RecyclerView.Adapter

10.登录界面跳转注册界面代码:

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.videoplayer.R;

public class WelcomeActivity extends AppCompatActivity {
//定义对象
Button bt_know_wel;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_welcome);
//绑定控件
bt_know_wel=findViewById(R.id. bt_know_wel);

//按钮单击事件
bt_know_wel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(WelcomeActivity.this,LoginActivity.class);
startActivity(intent);
finish();
}
});
}
}

  1. 系统测试
    5.1测试方法
    使用安卓手机或虚拟机将写完的项目跑入,看运行结果。
    5.2测试实现
    1.实现用户注册,将账号密码存储进数据库中。
    2.实现用户登录
    3.实现音乐列表显示
    4.实现点击相关音乐跳转到播放音乐以及音乐MV界面
    5.实现音乐暂停,切换,跳转,上一首,下一首。
    5.3测试结果

安卓APP源码和报告——音乐播放器

2.

安卓APP源码和报告——音乐播放器

3.

安卓APP源码和报告——音乐播放器

4.

安卓APP源码和报告——音乐播放器

5.

安卓APP源码和报告——音乐播放器

6.

安卓APP源码和报告——音乐播放器

7.

安卓APP源码和报告——音乐播放器
  1. 结论与心得
    通过本次Android项目——音乐播放器,让我对Android有了更深入的理解,对Android代码有了更加清晰的逻辑性。写完音乐播放器这个项目,让我觉得编写Android是一个很有趣的事情。通过自学和听课,我学会了如何完成一个项目,在今后的学习中,也会更加积极。
    参考文献
  2. [1] 张逸飞,严张凌.基于Android的智能家居客户端开发[J].信息与电脑(理论版),2020,32(13),63-65.

  3. [2] 吴红梅,李慧.基于Android的智能家居系统开发[J]. 科技展望,2017,(04):21.

  4. [3] 陈国童,邱兴阳.基于WIFI的Android手机智能家居控制[J],辽宁大学学报(自然科学版),2020,47(1),36-37.

  5. [4] 王宏博.计算机软件设计的原则分析[J],数码世界,2018(7),1.

  6. [5] 徐连成.基于Labview智能家居控制系统设计与仿真[J].电子技术与软件工程,2020(15):76-78.

  7. [6][4]高小平.中国智能家居的现状及其发展趋势[门].电器与能效管理技术,2005(4) : 18-21。

  8. [7] 郝志芃.我国智能家居现状及未来发展趋势探析[J]. 科技展望, 2017(03).

  9. [8] 王朝玉.基于物联网的智能家居控制系统设计[J]. 智能应用, 2017(01).

  10. [9]庄建辉,金光,江先亮.MQTT协议消息推送应用于海岛物联网的设计与实现[J].数据通信.2018(4):1-3.42.

  11. [10]SHAOS,PIPATTANASOMPORNM,RAHMA.Developmentofphysical-baseddemandrespoe

Original: https://blog.csdn.net/qq_39154376/article/details/128229301
Author: 云炬学长
Title: 安卓APP源码和报告——音乐播放器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816166/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球