- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
假设我有一个文件的完整路径。将该文件加载到 MediaPlayer 中的更好方法是什么?
String filePath = "somepath/somefile.mp3";
mediaPlayer.setDataSource(filePath);
或
String filePath = "somepath/somefile.mp3";
File file = new File(filePath);
FileInputStream inputStream = new FileInputStream(file);
mediaPlayer.setDataSource(inputStream.getFD());
inputStream.close();
这有关系吗?简单地使用路径似乎更容易,但是否有理由做额外的工作来使用 FileDescriptor?
最佳答案
其实在某些情况下还是有区别的。
mediaPlayer.setDataSource(String path)
调用 mediaPlayer.prepare()
时会失败, 如果您尝试从 getApplicationContext().getFilesDir()
加载文件,取决于文件的保存方式。例如,如果我使用 new RandomAccessFile(filePath, "rw")
编写文件,如果您使用 mediaPlayer.setDataSource(String path)
,则媒体播放器实际上无法读取该文件. prepare()
将立即触发error(1, -2147483648)
来自媒体播放器;本质上是文件权限错误。 SDK 9 引入 file.setReadable (boolean readable, boolean ownerOnly)
这可能允许您通过设置 ownerOnly
来解决此问题为 false...但如果您需要支持较旧的 SDK,这对您没有帮助。
然而,mediaPlayer.setDataSource(FileDescriptor fd)
没有这个问题,媒体播放器将成功地准备相同的文件而没有权限问题。
关于android - MediaPlayer setDataSource,最好用path还是FileDescriptor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625680/
我希望在我的应用程序中的某些点写入文件后强制同步到磁盘。由于它在 Linux 上运行,我可以运行 Runtime.getRuntime().exec("sync"); 但是,我宁愿不介绍 Linux
我有一个或多个非阻塞 FileDescriptor 对象(已经创建并从某个子系统传递给我)。我想等待,然后使用某种 select() 读取它们。我如何在 Java (Android) 中执行此操作?我
FileDescriptor Android 中的 API 说: Instances of the file descriptor class serve as an opaque handle to
我的应用需要执行以下操作: 打开一个FileInputStream,获取底层的FileDescriptor(通过getFd()) 根据上述FileDescriptor创建新的FileInputStre
我通过 FileOutputStream 写入文件,该文件通过其构造函数采用 FileDescriptor 打开。 我想要的行为:当我写入文件时,我希望它是唯一的内容。例如。写入“Hello”应该导致
想知道以下场景(简化的 Java 代码): //Thread A: FileOutputStream fos = new FileOutputStream(PATH); OutputStreamWri
这个问题已经有答案了: Why is java.io.FileDescriptor's constructor public? (2 个回答) 已关闭 8 年前。 我正在浏览 Java 的 API,想
我是 android 和 java 的初学者。 但是,我想使用 MediaRecorder 来录制语音并将数据记录为 byte[],我编写了以下代码: ParcelFileDescriptor[] f
给定一个 FileDescriptor 对象,是否可以通过某种方式从中创建一个 File? 谢谢! 最佳答案 不容易,如果有的话。来自documentation : Instances of the
在 Java 中,我们可以使用 Scanner 类来获取输入,但它不如 IO Package 的 BufferedReader 效率高。在初始化 Scanner 类的对象或 BufferedReade
假设我有一个有效的 Java FileDescriptor,它是通过这种方式获得的: FileInputStream is = new FileInputStream("/some/path/to/f
我有一些基于 asyncore lib 的 python 脚本,具有超过 3k 的传出套接字连接。由于连接限制 (1024),我无法使用 select(..),但 poll(..) 也无法正常工作:
在 Android 中,是否可以直接从字节数组生成 FileDescriptor 而无需先打开文件? 在 Android 2.2 中,我即时生成一个 MIDI 文件,然后使用 MediaPlayer
我正在使用 Intent 调用我的应用程序外部的文件选择器。一些文件选择器应用程序返回方案“内容”的 Uri。 我需要获取所选对象的最后修改日期。当方案是“内容”时我该怎么做?我没有找到合适的 API
关于我的问题的一些快速背景: 我正在编写一个将域类型强制规范转换为 Java 安全管理器代码的编译器。简而言之,DTE 定义“类型”(对象),为这些类型分配路径;然后定义“域”(主题),并定义域对各种
来自官方API : 您知道以下构造函数实际上有用的真实情况吗? 文件读取器 public FileReader(FileDescriptor fd) Creates a new FileReader,
我有一个FileDescriptor并且想打开它以使用单个 channel 进行读写。我可以使用像这样的流来获取一个用于读取的 channel 和一个用于写入的 channel ,但我更喜欢单个 ch
可能,这是一个复杂的问题,但我会尝试拍摄。 我使用 Monodroid(Android 的 Mono),并尝试将媒体流实现到 UDP 套接字。 Best way to stream audio and
我尝试使用带有 FileDescriptor 的 SoundPool 的加载函数,因为我希望能够设置偏移量和长度。该文件不存储在资源中,而是存储卡上的文件。即使 SoundPool 的加载和播放功能都
java.io.FileDescriptor.FileDescriptor() 的 JavaDoc说: Constructs an (invalid) FileDescriptor object. 如
我是一名优秀的程序员,十分优秀!