Android音乐App开发准备( 简易音乐 一 )

article/2025/10/31 16:17:37

Android音乐App开发准备( 简易音乐 一 )

  • 关于
    • 第一步,获取音乐来源
    • 第二步,开发环境
    • 第三步,引用三方
    • 第四步,添加唯一进程App.java

关于

  年前学习网易云因为app,想着学习网易云app的界面以及功能开发。年前那会刚毕业没多久,技术能力一般,项目就只是用了mvp框架,用了很多第三方。然后最近拿来在原来基础上进行完善顺便学习一下音乐的各种播放api。

第一步,获取音乐来源

  首先就需要音乐来源,然后我百度了网易云音乐API(网上好多):
在这里插入图片描述

,当然了我选择的自己搭建的,你也可以去github按照教程一步一步来,看到这个界面就表示成功了。

第二步,开发环境

  这里假设上一步你已经实现啦,下面是一些项目基本配置:

  • 开发工具 android studio 3.5.3
  • 开发语音 JAVA
  • 主要使用技术 butterknife+retrofit2+rxjava2+glide(基本的就是这样,后面还会有其他的会再介绍)

第三步,引用三方

  首先是项目根目录功能引用:

dependencies {classpath 'com.android.tools.build:gradle:3.5.3'classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.0'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}allprojects {repositories {google()jcenter()maven { url "https://jitpack.io" }}
}

  项目目录build.gradle配置(因为涉及多dex的配置,我就直接贴全了):

android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "com.tobey.jianyimusic"minSdkVersion 16targetSdkVersion 30versionCode 1versionName "1.0"multiDexEnabled truetestInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}dexOptions { //优化dex配置dexInProcess truepreDexLibraries truejavaMaxHeapSize "2g" //Java SDK 64位}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}
}dependencies {//第三方引用开始implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0'//黄油刀implementation 'com.jakewharton:butterknife:10.2.0'annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'//权限implementation 'com.permissionx.guolindev:permissionx:1.4.0'//glide引用implementation 'com.github.bumptech.glide:glide:4.11.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'//网络请求retrofitimplementation 'com.squareup.retrofit2:retrofit:2.9.0'//RxJavaimplementation 'io.reactivex.rxjava2:rxjava:2.1.7'//RxAndroidimplementation 'io.reactivex.rxjava2:rxandroid:2.0.1'//Retrofit 支持Rxjava 的支持库implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'//rxjava框架implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'implementation 'com.google.code.gson:gson:2.8.0'implementation 'com.squareup.retrofit2:converter-gson:2.1.0'// MultiDex的依赖implementation 'androidx.multidex:multidex:2.0.0'//吐司implementation 'com.hjq:toast:8.6'// CookieJarimplementation 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
}

第四步,添加唯一进程App.java

  代码中关于activity堆栈式管理类AppManager参考博文Android实现全局前后台监听

public class App extends Application {private static App instance;//多核优化冷启动初始化private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();private static final int CORE_POOL_SIZE = Math.max(2,Math.min(CPU_COUNT-1,4));private CountDownLatch mCountDownLatch = new CountDownLatch(1);// 单例模式获取唯一的Application实例public static Application getInstance(){return instance.getApplication();}@Overridepublic void onCreate() {super.onCreate();instance = this;Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {@Overridepublic boolean queueIdle() {//空闲时初始化,toast在主线程初始化,子线程会崩溃(不做looper等的修改)ToastUtils.init(instance,new ToastQQStyle(instance));return false;}});ExecutorService pool = Executors.newFixedThreadPool(CORE_POOL_SIZE);pool.submit(new Runnable() {@Overridepublic void run() {mCountDownLatch.countDown();}});pool.submit(new Runnable() {@Overridepublic void run() {//第三方初始化}});try {//如果await之前没有调用countDown那么就会一直阻塞在这里mCountDownLatch.await();}catch (InterruptedException e){e.printStackTrace();}registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {@Overridepublic void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {WeakReference<Activity> weakReference = new WeakReference<>(activity);AppManager.getAppManager().addActivity(weakReference);}@Overridepublic void onActivityStarted(@NonNull Activity activity) {}@Overridepublic void onActivityResumed(@NonNull Activity activity) {}@Overridepublic void onActivityPaused(@NonNull Activity activity) {}@Overridepublic void onActivityStopped(@NonNull Activity activity) {}@Overridepublic void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {}@Overridepublic void onActivityDestroyed(@NonNull Activity activity) {WeakReference<Activity> weakReference = new WeakReference<>(activity);AppManager.getAppManager().removeActivity(weakReference);}});}private Application getApplication() {return this;}@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(base);MultiDex.install(base);}
}

  然后记得要在AndroidManifest.xml配置文件中声明Appandroid:name=".App",然后在配置文件中添加对应部分权限:

 <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 允许安装和卸载文件系统权限 --><uses-permission android:name="android.permission.BROADCAST_STICKY" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <!-- 解锁屏幕需要的权限 --><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

  到目前为止,最初的项目配置已经初步完成了,第二篇请看Android音乐App开发准备( 简易音乐 二 )(关于混淆暂时先不配置),如果觉得写的不错的话记得点个赞 嗷~~


http://chatgpt.dhexx.cn/article/omeOs5Xc.shtml

相关文章

uniapp开发环境搭建

一、下载并安装开发工具 uniapp的开发工具为HbuilderX&#xff0c;下载地址为&#xff1a;去下载 这里选择windows版本。windows 版本下载完成之后会得到一个 zip 的压缩包文件&#xff0c;解压完成即可使用&#xff0c;是不需要安装的绿色版本。 二、安装sass和scss插件 打开…

uni-app开发环境搭建创建uni-app项目

uni-app修炼之路&#xff08;一&#xff09; 导语uni-app开发环境搭建1.进入官网下载HBuilder-X2.打开HBuilder-X&#xff0c;进行开发环境配置 创建uni-app项目快速上手 导语 uni-app使用了快半个月了&#xff0c;现在准备来系统的学习一下uni-app&#xff0c;并做一些笔记&a…

搭建iOS开发环境

1.准备 当前移动开发主要分为安卓开发和iOS开发&#xff0c;安卓是谷歌在2007年宣布开源的移动操作系统&#xff0c;iOS是苹果2007年发布的。两个系统出现的时间大致相同&#xff0c;在随后的十年间引领了移动开发浪潮。如今各种移动开发技术层出不穷&#xff0c;一些跨平台的…

HBuilderX App开发环境搭建

1. Nox 模拟器 1). 无脑式安装 Nox模拟器平板界面.png 2). 屏幕修改 点击右侧上方的设置按钮&#xff0c;在系统设置中选择手机版&#xff0c;点击保存并重启。 Nox设置界面.png 3). 端口设置 Nox模拟器默认端口&#xff1a;62001 2. HBuilderX 1). 点击右侧的Download&#…

模型部署,移动端安卓App开发环境搭建和配置教程 ~

点击上方“码农的后花园”&#xff0c;选择“星标” 公众号 精选文章&#xff0c;第一时间送达 在深度学习中&#xff0c;算法模型部署到移动端中应用是最终的目的&#xff0c;上期中讲解了App开发目前主要有以下三种方式&#xff1a; 第一种&#xff1a;Eclipse JDK Android…

安卓开发环境搭建

1.下载JDK 7&#xff08;1.7&#xff09;或者8 &#xff08;1.8&#xff09;SE 现在一般是8 安装 然后配置环境变量后 执行命令 javac 看看是否成功&#xff0c;java -version可以查看版本 oracle登录账号可用 oracle.com passwords - BugMeNothttp://bugmenot.com/vie…

Android app 开发环境搭建

Android app 开发环境搭建(AMD和intel环境下) 下载Anaroid studio 安装 选择你想要安装的Android Studio的功能。检查想要安装的组件&#xff0c;取消检查不想安装的组件。单击Next继续。 空间要求:2.3gb 配置 收集数据用于服务X 不安装SDK(自行下载) 个性化 选择…

Android APP完整基础教程(01)开发环境简介

该系列文章主要基于AndroidQ平台&#xff0c;主要介绍Android应用基础开发相关知识。主要针对安卓应用开发路径的完整解读 和 coding练习内容的解读。 1 Android 发展历史 1.1 Android 历史 2005年 Google收购了成立仅22个月的高科技企业Android公司。2007年 Google正式向外…

移动APP开发环境搭建(新手)

移动APP开发环境配置(新手搭建) 涉及到的配置工具 STS ( eclipse idea 一样的开发工具)java jdk : 是Java语言开发工具包&#xff0c;JDK是整个JAVA的核心&#xff0c;包括了Java运行环境ant &#xff1a;Ant是Java的生成工具&#xff0c;用来编译、生成&#xff1b;跨平台&…

JSON.

JSON JSON 指的是 JavaScript 对象表示法&#xff08;JavaScript Object Notation&#xff09;&#xff0c;是轻量级的文本数据交换格式 &#xff0c;使用 Javascript语法来描述数据对象&#xff0c;具有自我描述性&#xff0c;更易理解&#xff0c;但是 JSON 仍然独立于语言和…

JSONP 接口

1. 回顾 JSONP 的概念与特点 概念&#xff1a;浏览器端通过 <script> 标签的 src 属性&#xff0c;请求服务器上的数据&#xff0c;同时&#xff0c;服务器返回一个函数的调用。这种请求数据的方式叫做 JSONP。 特点&#xff1a; ① JSONP 不属于真正的 Ajax 请求&a…

Json接口代码生成工具-Json2Code

将接口的json文件转化为代码的工具&#xff0c;支持如下语言&#xff1a;C#,C,Dart,Go,Java,JavaScript,Kotlin,Objective-C,Python,Ruby,Rust,Swift,TypeScript Json2Code主要是为了解决前端在拿到后端swagger、postman等工具导出的接口描述文件的时候&#xff0c;大部分工作都…

Json 格式的接口测试该怎么做?

后端开发过程中&#xff0c;开发完毕后要进行必要的接口测试&#xff0c;很多人会疑惑 Json 格式的接口测试到底应该怎么做&#xff0c;为了让大家有个粗略的认识&#xff0c;这里我们运用 Eolink 接口工具来给大家演示一下 API 导入、对 API 进行测试以及更高级的 Mock 测试。…

http+json 格式的接口开发实践与思考

业务背景 最近一段时间&#xff0c;都在做接口对接&#xff0c;项目也差不多上线了&#xff0c;正好也总结下自己的想法和思考。 项目的主要目的是给我公司店铺的店长、员工、和业务品牌领导提供一个入口&#xff0c;可以很方便直观地看到店铺之间&#xff0c;员工之间的一些…

基于json文件创建后端模拟接口

json-server有很多接口&#xff1b;目的&#xff1a;基于一个json文件就可以创建很多的后端模拟接口&#xff1b; &#xff08;1&#xff09;先创建一个json文件&#xff1a; &#xff08;2&#xff09;然后下载nodejs&#xff1a;下载 | Node.js 中文网 注意&#xff1a;下…

SpringBoot接口接收json参数

1. 创建入参实体&#xff1a; package com.hsm.ls.application.test.domain;/*** Created by lfx on 2018/12/19.*/ public class ActiveRequest {private String sid;private String biz;private String text;public String getSid() {return sid;}public void setSid(String…

JSONP接口

概念&#xff1a;浏览器通过<script>标签的src属性&#xff0c;请求服务器上的数据&#xff0c;同时服务器返回一个函数的调用。这种请求数据的方式叫JSONP 特点&#xff1a;JSONP不属于真正的的Ajax请求&#xff0c;因为它没有使用XMLHttpRequest这个对象 JSONP仅支持G…

java 调用接口为json格式

#simple 直接上代码 ①pom文件导入hutool的war包 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.10</version></dependency>②new JSONObject(); 对象&#xff0c; put你所需要的…

『前端必备』本地数据接口—json-server

文章目录 json-server介绍简介操作步骤 操作数据增&#xff08;POST&#xff09;删&#xff08;DELETE&#xff09;改&#xff08;UPDATE、PATCH&#xff09;查&#xff08;GET&#xff09;筛选分页排序切片(分页)特殊符号添加_gte或_lte获取范围添加_ne以排除值添加_like到过滤…

接口接收JSON数据

1. 使用场景&#xff1a;定义接口供对方调用。请求数据为JSON格式&#xff0c;请求方法为post&#xff0c;请求参数如下&#xff1a; { "num":" 1600330803432", "comCode": "feisu" } 2. 接口接收方法 ResponseBody public Ba…