我正在使用超级强大的sdk进行音频处理,使用以下代码排除资产中的文件。
AssetFileDescriptor fd0 = getResources().openRawResourceFd(R.raw.recorded_audio);
int fileAoffset = (int) fd0.getStartOffset(), fileAlength = (int) fd0.getLength();
传递给函数的Above值为
SuperpoweredExample(Integer.parseInt(samplerateString), Integer.parseInt(buffersizeString), getPackageResourcePath(), fileAoffset, fileAlength);
这很好用,如果我把我的音频文件放在最好的原始文件夹中,但我的音频文件在运行时生成并读取我们无法在资源中写入文件。有什么办法可以使用外部存储器位置的文件吗?
答案 0 :(得分:3)
只需将文件路径作为字符串传递给Superpowered open()方法即可。这次不需要文件偏移和文件长度,因为您的文件是"完整的"这次是文件,而不是文件的某些部分。也许你根本就不需要Java。
答案 1 :(得分:1)
试试这段代码,它正在使用MediaPlayer类。
package com.example.audiomediaplayer1;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.MediaController;
import android.widget.VideoView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MediaPlayer mp=new MediaPlayer();
try{
mp.setDataSource("/sdcard/Music/maine.mp3");//Write your location here
mp.prepare();
mp.start();
}catch(Exception e){e.printStackTrace();}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
或者这个简短而简单的外部存储以及路径。
String filePath = Environment.getExternalStorageDirectory()+"/yourfolderNAme/yopurfile.mp3";
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(filePath);
mediaPlayer.prepare();
mediaPlayer.start();
希望它适合你。
答案 2 :(得分:0)
void SuperpoweredExample::setPlayerA(const char *path) {
playerA->open(path,0,0);
}
只需将文件路径作为字符串发送。
示例" /sdcard/sample.mp3"
答案 3 :(得分:0)
1)在AndroidManifest.xml中:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
包和应用程序标签之间的
2)在.cpp文件中创建Open File函数的副本,没有offset和length参数:
extern "C" JNIEXPORT void
Java_com_superpowered_playerexample_MainActivity_OpenFile2 (
JNIEnv *env,
jobject __unused obj,
jstring path // path to APK file
// length of audio file
) {
const char *str = env->GetStringUTFChars(path, 0);
player->open(str, 0, 0);
env->ReleaseStringUTFChars(path, str);
}
3)在你的MainActivity.class中:
String file = "/mnt/shared/Other/more.mp3";
OpenFile2(file);
对我有用,希望这可以帮助