From a7ba5d639843933290f128ff8df0d9dcb8cde4a0 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 16 Jun 2015 00:45:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=83=D1=80=D1=81=D0=BE=D0=B2=20=D0=B2=D0=BD=D1=83=D1=82=D1=80?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/annimon/everlastingsummer/IOUtil.java | 18 ++++++++++++++---- .../everlastingsummer/ViewActivity.java | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/com/annimon/everlastingsummer/IOUtil.java b/src/com/annimon/everlastingsummer/IOUtil.java index 49994b7..f7b5c84 100644 --- a/src/com/annimon/everlastingsummer/IOUtil.java +++ b/src/com/annimon/everlastingsummer/IOUtil.java @@ -13,6 +13,7 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import android.content.Context; +import android.content.res.AssetFileDescriptor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; @@ -23,8 +24,12 @@ import android.os.Environment; */ public final class IOUtil { - private static String SDCARD = Environment.getExternalStorageDirectory().getPath(); - private static String ES = SDCARD + "/everlastingsummer/"; + public static boolean useArchive = false; + public static String ASSETS = getSdCardPath() + "everlastingsummer/"; + + public static String getSdCardPath() { + return Environment.getExternalStorageDirectory().getPath() + "/"; + } public static Bitmap readBitmap(String file) throws IOException { final InputStream is = open(file); @@ -69,15 +74,20 @@ public final class IOUtil { } } + public static AssetFileDescriptor getAFD(String file) throws IOException { + return ViewActivity.getInstance().getAssets().openFd(ASSETS + file); + } + private static FileInputStream streamForFD; public static FileDescriptor getFD(String file) throws IOException { if (streamForFD != null) streamForFD.close(); - streamForFD = new FileInputStream(ES + file); + streamForFD = new FileInputStream(ASSETS + file); return streamForFD.getFD(); } public static InputStream open(String file) throws IOException { - return new FileInputStream(ES + file); + if (useArchive) return ViewActivity.getInstance().getAssets().open(ASSETS + file); + return new FileInputStream(ASSETS + file); } public static String readContents(InputStream is) throws IOException { diff --git a/src/com/annimon/everlastingsummer/ViewActivity.java b/src/com/annimon/everlastingsummer/ViewActivity.java index bb3c120..e69e6cf 100644 --- a/src/com/annimon/everlastingsummer/ViewActivity.java +++ b/src/com/annimon/everlastingsummer/ViewActivity.java @@ -1,5 +1,6 @@ package com.annimon.everlastingsummer; +import java.io.FileDescriptor; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; @@ -14,6 +15,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.res.AssetFileDescriptor; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; @@ -528,7 +530,12 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch stopMusic(fade); musicPlayer = new MediaPlayer(); musicPlayer.setOnCompletionListener(musicCompleteListener); - musicPlayer.setDataSource( IOUtil.getFD(PathResolver.music(name)) ); + if (IOUtil.useArchive) { + final AssetFileDescriptor afd = IOUtil.getAFD(PathResolver.music(name)); + musicPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); + } else { + musicPlayer.setDataSource( IOUtil.getFD(PathResolver.music(name)) ); + } musicPlayer.prepare(); musicPlayer.setVolume(1f, 1f); musicPlayer.setLooping(true); @@ -552,7 +559,12 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch stopSound(fade); soundPlayer = new MediaPlayer(); soundPlayer.setOnCompletionListener(soundCompleteListener); - soundPlayer.setDataSource( IOUtil.getFD(PathResolver.sound(name)) ); + if (IOUtil.useArchive) { + final AssetFileDescriptor afd = IOUtil.getAFD(PathResolver.sound(name)); + soundPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); + } else { + soundPlayer.setDataSource( IOUtil.getFD(PathResolver.sound(name)) ); + } soundPlayer.prepare(); soundPlayer.setVolume(1f, 1f); soundPlayer.setLooping(loop);