Procházet zdrojové kódy

修改midi文件的逻辑

Pq před 3 roky
rodič
revize
cab88f199f

+ 37 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/FileUtils.java

@@ -1,5 +1,6 @@
 package com.cooleshow.base.utils;
 
+import android.app.Application;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
@@ -1675,4 +1676,40 @@ public final class FileUtils {
         fos.close();
     }
 
+
+    /**
+     * 将assets中的sf2文件保存到sd卡供midi使用
+     *
+     * @param application
+     */
+    public static void CopyMidiFile(Application application) {
+        try {
+            File f = new File(application.getExternalFilesDir("colexiu") + "/dysf.sf2");
+            if (f.exists()) {
+                if (f.length() < 1024 * 1024 * 130) {
+                    //如果文件存在,并且低于138M
+                    //目前没有md5校验,所以先这样处理文件完整性的问题
+                    f.delete();
+                }
+            }
+            if (!f.exists()) {
+                InputStream is = application.getAssets().open("soundfont.sf2");
+                if (is == null) {
+                    return;
+                }
+                f.createNewFile();
+                OutputStream os = new FileOutputStream(f);
+                byte[] data = new byte[1024];
+                int len = 0;
+                while ((len = is.read(data)) != -1) {
+                    os.write(data, 0, len);
+                }
+                is.close();
+                os.close();
+            }
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
 }

binární
midiplaylib/src/main/assets/soundfont.sf2


+ 2 - 2
midiplaylib/src/main/java/com/jinmingyunle/midiplaylib/MidiPlayerUtils.java

@@ -399,7 +399,7 @@ public class MidiPlayerUtils {
 
 
     private void playSound(Context context, float speed) {
-        if (BassMusicPlay.getInstance().LoadSoundFont(context.getApplicationContext().getExternalFilesDir("daya") + "/dysf.sf2")) {
+        if (BassMusicPlay.getInstance().LoadSoundFont(context.getApplicationContext().getExternalFilesDir("colexiu") + "/dysf.sf2")) {
             if (currentStartPosition != 0) {
                 BassMusicPlay.getInstance().Seek(currentStartPosition);
             }
@@ -424,7 +424,7 @@ public class MidiPlayerUtils {
         if (compleListener != null) {
             BassMusicPlay.getInstance().SetOnCompletionListener(compleListener);
         }
-        if (BassMusicPlay.getInstance().LoadSoundFont(mContext.getApplicationContext().getExternalFilesDir("daya") + "/dysf.sf2")) {
+        if (BassMusicPlay.getInstance().LoadSoundFont(mContext.getApplicationContext().getExternalFilesDir("colexiu") + "/dysf.sf2")) {
             if (currentStartPosition != 0) {
                 BassMusicPlay.getInstance().Seek(currentStartPosition);
             }

+ 14 - 5
student/src/main/java/com/cooleshow/student/App.java

@@ -11,6 +11,7 @@ import androidx.annotation.RequiresApi;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.data.net.CommonParamsHelper;
+import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.ProcessUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -33,6 +34,7 @@ import io.rong.push.pushconfig.PushConfig;
  */
 public class App extends BaseApplication {
     public static boolean isRefresh = false;
+
     @Override
     public void onCreate() {
         super.onCreate();
@@ -40,6 +42,7 @@ public class App extends BaseApplication {
         Utils.init(this);
         initCommonParams();
         initSDK();
+        initMidFile();
     }
 
     private void initSDK() {
@@ -51,11 +54,17 @@ public class App extends BaseApplication {
         initRong();
         initUmeng();
     }
-   /* public static String channel;
-    public void initBaseOtherSdk() {
-        channel = WalleChannelReader.getChannel(this);
-    }*/
-    private void initUmeng(){
+
+    private void initMidFile() {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FileUtils.CopyMidiFile(App.this);
+            }
+        }).start();
+    }
+
+    private void initUmeng() {
         UMConfigure.init(this, "62a8394605844627b5b0554b", "app", UMConfigure.DEVICE_TYPE_PHONE, null);
         String FileProvider = "com.cooleshow.student.fileprovider";
         PlatformConfig.setWeixin("wx97408cd22c879ff7", "665a1608a16631dee40d737b4d1a0ad1");

+ 11 - 0
teacher/src/main/java/com/cooleshow/teacher/App.java

@@ -9,6 +9,7 @@ import android.webkit.WebView;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.data.net.CommonParamsHelper;
+import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.ProcessUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -39,6 +40,16 @@ public class App extends BaseApplication {
         Utils.init(this);
         initCommonParams();
         initSDK();
+        initMidFile();
+    }
+
+    private void initMidFile() {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FileUtils.CopyMidiFile(App.this);
+            }
+        }).start();
     }
 
     private void initSDK() {