Android Studio 中Assets的使用

 Android Studio 添加Assets目录:

1、In Android Studio, right-click on the Android Studio 中Assets的使用 folder and navigate to the Assets Folder.

Android Studio 中Assets的使用

On the next screen just click Finish.

Android Studio 中Assets的使用

It will create the assets folder in the main target source set.

Android Studio 中Assets的使用

2、可以在build.gradle文件下配置,加如下代码

" sourceSets { main { assets.srcDirs = ['src/assets', 'src/assets/'] } } "

android {
compileSdkVersion 24
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.city.linkage"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets { main { assets.srcDirs = ['src/assets', 'src/assets/'] } }
}

根据 assets.srcDirs=['src/assets']  这个路径来放置,(注:路径可以改变)如图:

<iframe id="iframe_0.7414613890904245" style="margin: 0px; padding: 0px; border-width: initial; border-style: none; width: 172px; height: 155px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22https://static.oschina.net/uploads/space/2017/0222/180354_n60s_2945455.png?_=6430366%22%20style=%22border:none;max-width:730px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.7414613890904245',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>

 

如何获得android assert 里图片的绝对路径:

第一种方法:

String path = "file:///android_asset/文件名";

第二种方法:

InputStream abpath = getClass().getResourceAsStream("/assets/文件名");

若要想要转换成String类型

String path = new String(InputStreamToByte(abpath ));

private byte[] InputStreamToByte(InputStream is) throws IOException {
        ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
        int ch;
        while ((ch = is.read()) != -1) {
            bytestream.write(ch);
        }
        byte imgdata[] = bytestream.toByteArray();
        bytestream.close();
        return imgdata;
    }

        这样获取的路径并不能直接访问到assets的资源,如果一个mp3放在assets下,通过以上两种方法获得的路径并不能直接播放里面的mp3文件,那是因为在安卓应用中使用assets目录下存放的资源文件,是代表应用无法直接访问的原生资源,应用程序通过AssetManager以二进制流的形式来读取资源。

        第一种获取路径的方法,目前我所知道的,只是针对html的展示来使用的,比如你用到了webview,那么html的path可以用这种方法显示,其他情况不行。

        那么我们想用MediaPlayer播放里面的视频或者音乐该怎么做呢?可以以以下方式进行播放:

   

         MediaPlayer mediaPlayer=new MediaPlayer();
            AssetFileDescriptor afd = getAssets().openFd("musics/SleepOceation.mp3");
            mediaPlayer.setDataSource(afd.getFileDescriptor());
            mediaPlayer.prepare();(注意这句话必须有!)
            mediaPlayer.start();

 

  OK,这样就能顺利播放assets下的音乐或者视频文件了!