Articles of inputstream

你如何在MediaPlayer上玩Android InputStream?

所以我的资源文件夹中有一个小的音频文件,我想打开一个InputStream写入缓冲区,然后写入临时文件,然后打开MediaPlayer播放该临时文件。 问题是,当媒体播放器点击mp.Prepare()时,它不播放并且永远不会到达吐司。 有没有人曾经这样做过? public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); InputStream str; try { str = this.getAssets().open(“onestop.mid”); Toast.makeText(this, “Successful Input Stream Opened.”, Toast.LENGTH_SHORT).show(); takeInputStream(str); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }//end on create public void takeInputStream(InputStream stream) throws IOException { //fileBeingBuffered = (FileInputStream) stream; //Toast.makeText(this, “sucessful stream conversion.”, Toast.LENGTH_SHORT).show(); […]

如何写一个潜在的巨大InputStream到文件?

我有一个返回字节数组的API调用。 我当前将结果流式传输到字节数组,然后确保校验和匹配,然后将ByteArrayOutputStream写入File。 代码是这样的,它运行得很好。 String path = “file.txt”; ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } FileOutputStream stream = new FileOutputStream(path); stream.write(byteBuffer.toByteArray()); 我担心输入流的结果可能大于android中的堆大小,如果整个字节数组在内存中,我可能会得到OutOfMemoryexception。 将inputStream写入文件块的最优雅方法是什么,这样字节数组永远不会大于堆大小?

Android openRawResource()不适用于drawable

我正在尝试通过这样做来创建输入流 InputStream is = (InputStream) getResources().openRawResource(R.drawable.image1); 但是我遇到了关于我的可绘制文件(R.drawable.image1)的错误“原始types的预期资源”。 image1是一个png,位于我的res / drawable文件夹中。 有任何想法吗???

如何在Android内容提供商中存储大blob?

我有一些大文件(图像和video),我需要存储在内容提供商。 android文档表明…… 如果您公开的字节数据太大而无法放入表本身 – 例如大型位图文件 – 向客户端公开数据的字段实际上应该包含content:URI字符串。 这是允许客户端访问数据文件的字段。 该记录还应该有另一个名为“_data”的字段,该字段列出设备上该文件的确切文件路径。 此字段不是由客户端读取,而是由ContentResolver读取。 客户端将在面向用户的字段上调用ContentResolver.openInputStream(),该字段包含项目的URI。 ContentResolver将为该记录请求“_data”字段,并且因为它具有比客户端更高的权限,所以它应该能够直接访问该文件并将该文件的读取包装器返回给客户端。 – http://developer.android.com/guide/topics/providers/content-providers.html#creating 我找一个例子有些困难。 特别是我希望在ImageView的上下文中使用位图。 考虑以下代码准代码(它不起作用)…… ImageView iv = …. String iconUri = cursor.getString(cursor.getColumnIndex(Table.ICON)); iv.setImageURI(Uri.parse(iconUri)); 意见/问题… 如何正确重建存储/恢复的uri? (这是表格中的文字) setImageURI实现使用内容解析openInputStream,所以这应该工作。 String scheme = mUri.getScheme(); … } else if (ContentResolver.SCHEME_CONTENT.equals(scheme) || ContentResolver.SCHEME_FILE.equals(scheme)) { try { d = Drawable.createFromStream( mContext.getContentResolver().openInputStream(mUri), null); –frameworks /碱/核心/ JAVA /机器人/插件/ ImageView.java 我搞定了。 […]

Android版本> 2.3上的FileNotFoundException

我尝试在手机上将文件下载到SD卡。 在Android 2.1,2.2和2.3上,一切都按预期工作,但在Android 4.0(在模拟器和我的Galaxy Nexus上测试)它会抛出FileNotFoundException 。 堆栈跟踪: 02-27 21:49:06.733: W/System.err(27648): java.io.FileNotFoundException: http://www.wdr.de/wdrlive/media/wdr5.m3u 02-27 21:49:06.733: W/System.err(27648): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177) 02-27 21:49:06.733: W/System.err(27648): at de.arvidg.test.StartActivity$9.run(StartActivity.java:833) 02-27 21:49:06.733: W/System.err(27648): at java.lang.Thread.run(Thread.java:856) 我下载文件的方法: downloadFile(“http://www.wdr.de/wdrlive/media/wdr5.m3u”); public void downloadFile(final String fileUrl) { new Thread(new Runnable() { @Override public void run() { try { URL url = new URL(fileUrl); HttpURLConnection urlConnection = (HttpURLConnection) […]

智能手机上的文件读取性能:内部存储与SD卡与PC硬盘的比较

我的Android应用程序将使用大而大的文件(即大小在10MB到2GB之间)。 我一直想知道智能手机使用什么硬件来稳定存储,以及软件(文件读取/搜索)注意事项是否与PC硬盘类似。 我试图find有关硬件的信息并且有一些关于它的图片(内部存储,SD卡),但我检查的所有来源都不是全面和/或具体的。 我的(相互关联的)问题是: 在阅读“现代”智能手机(例如Android 2.2手机)上的大文件时,我必须考虑哪些主要差异,与使用PC的Java应用程序做同样的事情相比? (在磁盘搜索/读取性能方面;显然,手机RAM比PC小,所以在缓冲区等情况下必须考虑到这一点) 智能手机中使用的稳定存储硬件与PC硬盘之间的(相关)主要区别是什么? (我知道这是一个非常广泛的问题,所以我甚至欣赏这里非常简短的答案以及可能的一些可靠的外部URL) 在InputStream读取和搜索(skipBytes)方面,使用内部存储和SD卡之间是否存在差异(例如在Android上)(我故意不写“外部存储”,因为它不一定是每个SD卡上的SD卡设备)? SD卡速度慢吗? 例如,我想从2GB文件中读取2MB数据,这个2MB数据分布在文件的许多不同/远端部分。 所有偏移都是已知的,因此我创建偏移的升序,然后使用BufferedInputStream.read() (例如在DataInputStream )来读取它们(并使用skipBytes()在必要时进行搜索)。 因此,在底层文件系统中,这可能需要“遍历”整个2GB文件。 (例如,Android在需要时使用linux函数在文件中进行搜索。)然而,正在寻求像PC硬盘一样高效吗? 在寻求效率方面,SD卡与内部存储有何关系? 什么是典型的数据读取速度? (智能手机内部存储与SD卡与PC非SSD硬盘相比) 我知道我的具体应用的基准测试是必须的,但我也欢迎在这个问题上进行理论上的澄清。 重要提示 :当我问“……正在寻求与PC硬盘一样高效吗?”时,我(不)只是指绝对值,而是它的机制 。 也就是说,如果它基于相同的逻辑原理工作(=尽可能跳过大部分),或者存在一些缺点(例如,在SD卡上不能进行这种“基于跳过的”搜索,因此跳过更多 – – 即非比例 – 在智能手机硬件上比在PC硬盘上无用。

使用Dropbox API上传Android文件

如何使用Dropbox API将文件(图形,音频和video文件)上传到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.”); } 但是当我尝试更改它并使用以下代码上传实际文件时: File tmpFile = new File(fullPath, “IMG_2012-03-12_10-22-09_thumb.jpg”); […]

无法在Jelly Bean上读取套接字InputStream

我有一个TCP套接字连接,在Android 2.3上运行良好但现在面临Android 4.1上的一些问题。 问题是InputStream.read()方法总是返回-1(没有阻塞),就像关闭连接一样。 创建套接字: SocketFactory socketFactory = SocketFactory.getDefault(); Socket socket = socketFactory.createSocket(“c.whatsapp.net”, 5222); socket.setSoTimeout(3*60*1000); socket.setTcpNoDelay(true); 检索输入和输出流并编写一些初始数据: InputStream inputStream = new BufferedInputStream(socket.getInputStream()); OutputStream outputStream = new BufferedOutputStream(socket.getOutputStream()); outputStream.write(87); outputStream.write(65); outputStream.write(1); outputStream.write(2); outputStream.flush(); 然后,这个条件总是不受阻塞地通过: int c = inputStream.read(); if (c < 0) { Log.d(TAG, "End of stream"); } 此代码在后台线程中运行 。 它正在研究姜饼。 试图使用InputStreamReader和OutputStreamWriter而不是直接流 – 没有效果。

将文件从外部存储加载到Inputstream

我的外部目录中有一个video文件。 我怎样才能将它加载到inputstreamvariables。 目前我正在读取res / raw文件夹中的文件,但我想从SD卡中读取它。 我也不知道文件的名称,但它的路径将通过意图收到。 检查以下代码 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; […]

Android – 从网站下载图片,保存到内部私人应用程序的内存,显示列表项

我想要做的是这样的:我想我的应用程序从互联网上下载一个图像,并将其保存到手机的内部存储器的应用程序私有位置。 如果没有图像可用于列表项目(即它不能在互联网上find),我想要一个默认的占位符图像显示。 这是我在list_item_row.xml文件中定义的默认图像。 在我的ListActivity文件中,我调用了一个我写的CustomCursorAdapter类的实例。 它在CustomCursorAdapter中遍历所有列表项,并定义需要将哪些内容映射到视图,包括通过尝试从内部内存读取图像文件。 我已经看到了这个问题上的几个问题,但这些例子要么是特定于外部手机内存(如SDCard),涉及保存string而不是图像,或涉及使用Bitmap.CompressFormat减less文件的分辨率(这是不必要的我的情况,因为这些图像将是小分辨率的小缩略图)。 试图拼凑每个例子中的代码一直是困难的,因此我问我的具体例子。 目前,我相信我已经写了有效的代码,但没有图像显示我的列表项目,包括默认的占位符图像。 我不知道这个问题是由无效的下载/保存代码,还是无效的读取代码造成的 – 这不利于我不知道如何检查内部存储器来查看图像是否存在。 无论如何,这是我的代码。 任何帮助将不胜感激。 ProductUtils.java public static String productLookup(String productID, Context c) throws IOException { URL url = new URL("http://www.samplewebsite.com/" + productID + ".jpg"); URLConnection connection = url.openConnection(); InputStream input = connection.getInputStream(); FileOutputStream output = c.openFileOutput(productID + "-thumbnail.jpg", Context.MODE_PRIVATE); byte[] data = new byte[1024]; output.write(data); output.flush(); […]