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

您所在的位置:网站首页 制作音乐手机app Android音乐App开发准备( 简易音乐 一 )

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

2024-07-12 07:30| 来源: 网络整理| 查看: 265

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 30 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.tobey.jianyimusic" minSdkVersion 16 targetSdkVersion 30 versionCode 1 versionName "1.0" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } dexOptions { //优化dex配置 dexInProcess true preDexLibraries true javaMaxHeapSize "2g" //Java SDK 64位 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility 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' //网络请求retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' //RxJava implementation 'io.reactivex.rxjava2:rxjava:2.1.7' //RxAndroid implementation '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' // CookieJar implementation '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(); } @Override public void onCreate() { super.onCreate(); instance = this; Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() { @Override public boolean queueIdle() { //空闲时初始化,toast在主线程初始化,子线程会崩溃(不做looper等的修改) ToastUtils.init(instance,new ToastQQStyle(instance)); return false; } }); ExecutorService pool = Executors.newFixedThreadPool(CORE_POOL_SIZE); pool.submit(new Runnable() { @Override public void run() { mCountDownLatch.countDown(); } }); pool.submit(new Runnable() { @Override public void run() { //第三方初始化 } }); try { //如果await之前没有调用countDown那么就会一直阻塞在这里 mCountDownLatch.await(); }catch (InterruptedException e){ e.printStackTrace(); } registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) { WeakReference weakReference = new WeakReference(activity); AppManager.getAppManager().addActivity(weakReference); } @Override public void onActivityStarted(@NonNull Activity activity) { } @Override public void onActivityResumed(@NonNull Activity activity) { } @Override public void onActivityPaused(@NonNull Activity activity) { } @Override public void onActivityStopped(@NonNull Activity activity) { } @Override public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) { } @Override public void onActivityDestroyed(@NonNull Activity activity) { WeakReference weakReference = new WeakReference(activity); AppManager.getAppManager().removeActivity(weakReference); } }); } private Application getApplication() { return this; } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(base); } }

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3