我有一个非常简单的媒体播放器播放背景.它从apk调用文件,但我希望它可以从任何目录播放,如音乐或SD卡.
这是我的代码:
private MediaPlayer mpintro;
.
.
mpintro = MediaPlayer.create(this, R.raw.intro);
mpintro.setLooping(true);
mpintro.start();
Run Code Online (Sandbox Code Playgroud) 我的外部目录中有一个视频文件.我怎样才能将它加载到inputstream变量.暂时我正在读取res/raw文件夹中的文件,但我想从sdcard中读取它.我也不知道文件的名称,但它的路径将通过意图收到.检查以下代码
public class SonicTest extends Activity
{
VideoView videoView;
String uri;
InputStream soundFile;
File file;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void play(View view)
{
new Thread(new Runnable()
{
public void run()
{
float speed= (float) 1.0;
float pitch= (float) 1.5;
float rate= (float) 1.0;
uri= Environment.getExternalStorageDirectory().toString();
uri=uri+"/video.3gp";
AndroidAudioDevice device = new AndroidAudioDevice(22050, 1);
Sonic sonic = new Sonic(22050, 1);
byte samples[] = new byte[4096];
byte modifiedSamples[] = new byte[2048];
InputStream soundFile = null;
//soundFile = …Run Code Online (Sandbox Code Playgroud) 我为此感到疯狂:
Log.d("STATE", Environment.getExternalStorageState());
File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "work_data");
Log.d("PATH", f.getAbsolutePath());
if (!f.exists()) {
Log.d("MAKE DIR", f.mkdirs() + "");
}
Run Code Online (Sandbox Code Playgroud)
输出日志如下所示:
STATE mounted
PATH /mnt/sdcard/DCIM/work_data
MAKE DIR false
Run Code Online (Sandbox Code Playgroud)
我确保添加正确的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么它无法创建该文件夹.我也mkdir()一步一步地使用,但结果是一样的.请帮我.我用Google搜索了这么多,并且在这个愚蠢的事情上花了至少两天时间.谢谢你的帮助!!
编辑:
大家好!我添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>了<application>标签.这是我的错!但是谢谢大家的回复.
我编写了一个代码来录制音频并将其保存到文件位置下方.
private String getFilename() {
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath, AUDIO_RECORDER_FOLDER);
if (!file.exists()) {
file.mkdirs();
}
return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + file_exts[currentFormat]);
}
Run Code Online (Sandbox Code Playgroud)
在Logcat中,它为我提供了一个文件位置
/storage/emulated/0/AudioRecorder/1436854479696.mp4
我无法在SD卡上找到此文件位置.如何访问该位置?
在模拟器上,我从Google下载了一张图片.我可以在模拟器上找到图像,但我不知道图像的文件位置是什么.要调试我的应用程序,我需要知道该图像的位置.如何获得图像的完整路径?
我需要res/raw /中所有文件的名称(String)
我试过了:
File f = new File("/");
String[] someFiles = f.list();
Run Code Online (Sandbox Code Playgroud)
它看起来像根目录是android模拟器的根...而不是我的计算机根目录.这有足够的意义,但并没有真正帮助我找出原始文件夹的存在位置.
更新:感谢所有的好评.似乎其中一些是有效的,但只让我走了一半.也许更详细的描述会有所帮助
我想获取原始文件夹中的所有mp3文件,以便我可以获取所有名称,然后将它们添加到URI以便以下列方式播放随机MP3 ...
String uriStr = "android.resource://"+ "com.example.phone"+ "/" + "raw/dennis";
Uri uri = Uri.parse(uriStr);
singletonMediaPlayer = MediaPlayer.create(c, uri);
Run Code Online (Sandbox Code Playgroud)
当我将"dennis.mp3"放入assets文件夹时,它会按预期显示,但是,使用上面的代码,我再也无法访问该MP3,除非有以下内容:
String uriStr = "android.assets://"+ "com.example.phone"+ "/" + "dennis";
Uri uri = Uri.parse(uriStr);
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码启动选择documnets的意图.
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"), 1);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
在onActivity结果当我试图获取文件路径时,它在文件名的位置给出了一些其他数字.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
// Get the Uri of the selected file
Uri uri = data.getData(); …Run Code Online (Sandbox Code Playgroud) 是否可以将sdcard中存在的文件夹复制到以编程方式呈现相同SD卡的另一个文件夹?
如果是这样,怎么办?
我想从Gallery中选择图像并将其复制到SDCard中的其他文件夹中.
从图库中选择图像的代码
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, REQUEST_CODE_CHOOSE_PICTURE_FROM_GALLARY);
Run Code Online (Sandbox Code Playgroud)
我在content://media/external/images/media/681onActivityResult上获得了这个URI.
我想复制图片,
形成 path ="content://media/external/images/media/681
到 path = "file:///mnt/sdcard/sharedresources/ SD卡中的Android这条道路.
这该怎么做?
android android-intent android-gallery android-contentprovider android-file
如何使用Dropbox API将文件(图形,音频和视频文件)上传到Dropbox?我按照Dropbox SDK Android页面上的教程进行操作,可以使样本生效.但是现在我想要上传一个实际的File对象而不是String,而是在苦苦挣扎.
示例代码没有任何问题,看起来像这样:
String fileContents = "Hello World!";
ByteArrayInputStream inputStream = new ByteArrayInputStream(fileContents.getBytes());
try {
Entry newEntry = mDBApi.putFile("/testing_123456.txt", inputStream, fileContents.length(), null, null);
} catch (DropboxUnlinkedException e) {
Log.e("DbExampleLog", "User has unlinked.");
} catch (DropboxException e) {
Log.e("DbExampleLog", "Something went wrong while uploading.");
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试更改它并使用以下代码上传实际文件时:
File tmpFile = new File(fullPath, "IMG_2012-03-12_10-22-09_thumb.jpg");
// convert File to byte[]
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(tmpFile);
bos.close();
oos.close();
byte[] bytes = bos.toByteArray();
ByteArrayInputStream inputStream = …Run Code Online (Sandbox Code Playgroud)