Android Studio音频视频播放器课程设计
这个项目适合刚刚学习Android studio的初学者,实现音视频的基本播放功能,各项功能的页面都做的比较简单,特别适用于初学者,其特点在于本项目抛开了各种花里胡哨的制作,以最接近初学者的样式画面呈现,完全不用担心被质疑套用别人的项目,要是实在追求完美的话,本文末尾也附上了经过美化后的相同项目链接。
姓名:阿三 学院:信息工程学院 专业:软件工程 学号:2111111111 任务起止日期:2023.12.27-2024.1.2 |
课程设计题目:基于Android Studio的音视频播放系统设计与实现 |
一、问题描述 音视频播放系统包括:使用sqlite创建数据库用于存储用户信息、启动效果、用户注册、用户登录、显示用户信息、音乐播放、视频播放等功能。 二、功能描述 设计一个音视频播放器app,使之能够实现以下功能:
三、功能实现 项目目录: 1.创建数据库,建立一个用户表,表结构如下: 2.实现app启动页面,页面效果如下: 3.实现用户登录功能,用户需要提供有效的用户名和密码,否侧提示用户名无效或密码无效: 4.实现用户注册功能,点击注册按钮跳转至用户注册页面,用户注册成功跳转回用户登录页面进行用户登录: 5.显示历史登录用户信息功能,登录成功后,点击信息后,跳转至用户信息显示界面,用户可查看历史登录用户信息。 6.实现音乐播放功能,登录成功后,默认显示音乐列表,点击音乐后,跳转至音乐播放界面,用户可通过点击播放按钮进行音乐的播放、暂停、上一曲和下一曲操作,同时用户也可以通过拖动进度条控制音乐的播放进度: 7.实现视频播放功能,在默认页面点击视频按钮后,跳转至视频列表,点击视频可进入视频播放页面,用户可通过点击播放、暂停、继续播放按钮对视频进行播放控制。 四、源代码 1.用户类定义User.java package and.yjg.music_app.Login; this.account = account; this.password = password; this.phone = phone; this.address = address; public String password; public String phone; public String address; public String getAccount() { return account; public void setAccount(String account) { this.account = account; public String getPassword() { return password; public void setPassword(String password) { this.password = password; public void setPhone(String phone) { this.phone = phone; public void setAddress(String address){ this.address = address; public String toString () { return "用户名:" + account + "\n" + "密码:" + password + "\n " + "电话:" + phone + "\n " + "地址:" + address + "\n"; 2.UserDao.java package and.yjg.music_app.Login; private Context context; this.context = context; dbHelper = new DataBaseHelper(context); try { db = dbHelper.getWritableDatabase(); db = dbHelper.getReadableDatabase(); if (db != null) { db.close(); db = null; ContentValues values = new ContentValues(); values.put("account", user.account); values.put("password", user.password); values.put("phone", user.phone); values.put("address", user.address); db.insert("user", null, values); db.delete("user", "account = ?", new String[]{user.account}); ContentValues values = new ContentValues(); values.put("password", user.password); db.update("user", values, "account = ?", new String[]{user.account}); if (cursor == null || cursor.getCount() return false; if (cursor.moveToFirst()) { do { String pass = cursor.getString(cursor.getColumnIndex("password")); String pho = cursor.getString(cursor.getColumnIndex("phone")); String addr = cursor.getString(cursor.getColumnIndex("address")); Log.d("UserDao", "user account is" + acc); Log.d("UserDao", "user password is " + pass); Log.d("UserDao", "user phone is " + pho); Log.d("UserDao", "user address is " + addr); cursor.close(); return true; Cursor cursor = db.query("user", null, "account = ?", new String[] {account}, null, null, null); return cursor != null && cursor.getCount() > 0; Cursor cursor = db.query("user", null, "account = ?", new String[] {account}, null, null, null); cursor.moveToFirst(); String password = cursor.getString(cursor.getColumnIndex("password")); return password; 3.启动效果WelcomeActivity.java package and.yjg.music_app; private TextView tvCountdown; private CountDownTimer countDownTimer; private long timeLeftInMillis = 3000; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); tvCountdown = findViewById(R.id.tv_countdown); private void startCountdown() { countDownTimer = new CountDownTimer(timeLeftInMillis,1000){ public void onTick(long millisUntilFinished){ timeLeftInMillis = millisUntilFinished; int secondsRemaining = (int) (millisUntilFinished/1000); tvCountdown.setText(secondsRemaining+"s"); public void onFinish(){ super.onDestroy(); if (countDownTimer != null){ countDownTimer.cancel(); 4.用户登录LoginActivity.java package Login; private Button btn_login; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); public void initView() { if(actionBar != null){ actionBar.hide(); btn_register = findViewById(R.id.btn_register); et_account = findViewById(R.id.et_account); et_password = findViewById(R.id.et_password); @Override public void onClick(View v) { String acc = et_account.getText().toString().trim(); String pass = et_password.getText().toString().trim(); dao = new UserDao(getApplicationContext()); dao.open(); if (dao.isExist(acc) == false) { Toast.makeText(LoginActivity.this,"账号不存在,请重新输入!", Toast.LENGTH_SHORT).show(); if (dao.getPassword(acc).equals(pass)) { Intent intent = new Intent(LoginActivity.this, MainActivity.class); Toast.makeText(LoginActivity.this, "密码错误,请重新输入!", Toast.LENGTH_SHORT).show(); dao.close(); btn_register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(LoginActivity.this, RegisterActivity.class); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ super.onActivityResult(requestCode, resultCode, data); if(data != null){ String name = data.getStringExtra("acc"); String password = data.getStringExtra("pass"); et_account.setText(name); et_password.setText(password); 五、各类布局文件 activity_welcom.xml
activity_login.xml
总结:在这次基于Android Studio的音视频播放系统设计与实现的课程设计中,我不仅掌握了一系列关键技术和工具,还对整个项目开发流程有了更深入的理解。:熟悉并掌握了Android Studio的开发环境,包括如何设置、配置项目,以及使用内置的工具如模拟器进行测试。深入了解了Android SDK和相关API,特别是与音视频播放相关的部分,如MediaPlayer、VideoView等。 此外,这次实验中,我还遇到一些数据传递中断问题,所以我还查看了一些使用断电调试的方法,也是得我掌握了一些关于断点调试的有关用法,这也让我意识到断点调试与良好的代码组织和注释习惯是相辅相成的。一个清晰、有良好注释的代码结构使得断点调试更为有效,因为你可以快速了解每一部分代码的作用和相互关系。 通过这次课程设计,我不仅提高了技术能力,更重要的是学会了如何综合运用这些技术来解决实际问题。 |
由于篇幅限制,此处就只放了部分代码,其实也还够用,有需要的尽可拿去用。另外在这里附上这个项目的完整代码链接https://download.csdn.net/download/weixin_74924162/89248276。
如果有小伙伴想要源码但是又没有会员的可以评论在下方,找我白嫖。
(因为有多篇文章源码,所以最好是在本文章里评论,我能第一时间知道你要的是哪一个源码,同时也可以点赞收藏加评论啥的给卑微的咱增加点微薄的积分吧,就当是报酬了,提前写过各位看官啦。)
这里分享一个做了页面美化的版本链接给有需要的伙伴:Android studio音频视频播放器课程设计(继上一个项目,这里做了稍许的美化改动以及部分功能的改动)-CSDN博客