草庐IT

inputstream

全部标签

java - 如何在 Android 上解锁 InputStream.read()?

我有一个线程,其中循环调用了InputStream的read()方法。当没有更多字节可读时,流将阻塞直到新数据到达。如果我从另一个线程在InputStream上调用close(),流将关闭,但是阻塞的read()调用仍然被封锁。我假设read()方法现在应该返回值-1以指示流的结尾,但事实并非如此。相反,它会再阻塞几分钟,直到发生tcp超时。如何解锁close()调用?编辑:显然,当阻塞read()调用对应的流或套接字是close()时,常规JRE将立即抛出SocketException>'。但是,我使用的AndroidJava运行时不会。任何有关Android环境解决方案的提示都将不

java - Android 上 Assets 文件夹中的 InputStream 返回空

我没有收到任何异常,但是当我运行时...InputStreamdeckFile=context.getAssets().open("cards.txt");然后,deckFile.read()返回-1。该文件位于正确的文件夹中,并且不是空的。这应该是世界上最简单的事情了......编辑:AssetManager确实列出了“cards.txt”,所以这不应该是问题所在。 最佳答案 尝试下面的代码行InputStreamis=getAssets().open("test.txt");intsize=is.available();byte

android - 如何在创建位图之前从 InputStream 知道位图大小?

我需要在创建图片之前对其进行缩放,并且我只想在它超过1024KB(例如)时执行此操作。通过执行以下操作,我可以缩放图像,但我只需要缩放大于给定尺寸的图像。BitmapbmImg=null;InputStreamis=url.openStream();BitmapFactory.Optionsopts=newBitmapFactory.Options();opts.inSampleSize=10;bmImg=BitmapFactory.decodeStream(is,null,opts);如何获取位图的大小?(我很高兴知道字节数,而不是解压后的大小)。编辑:我正在尝试这个:BitmapF

Android InputStream 丢弃前两个字节(修改后的 BluetoothChat)

我使用BluetoothChat示例中的代码从蓝牙秤发送和接收字节数据。秤从设备接收命令,然后发回一个字节数组。{2,198,48,48,48,48,199,3}在我们的通信协议(protocol)中,2=STX,198=数据包开始,199=数据包结束,3=ETX。一切正常,除了BluetoothChatService.java中的以下代码react异常,因为它丢弃了前两个字节。/***Thisthreadrunsduringaconnectionwitharemotedevice.*Ithandlesallincomingandoutgoingtransmissions.*/priv

java - 无法在 Android 平台上为蓝牙套接字使用 InputStream 创建 ObjectInputStream

我正在为Android手机编写一款多人游戏。通信是通过蓝牙进行的。我已经设法使用输入/输出流将字节从一部手机发送到另一部手机。因为我需要能够传输对象,所以我想要对象流。但是,当我尝试使用我的流创建对象流时,我的程序在指令上挂起。publicclassConnectedThreadextendsThread{privatestaticfinalStringTAG="ConnectedThread";privatefinalBluetoothSocketmmSocket;privatefinalInputStreammmInStream;privatefinalOutputStreammm

android - 如何从 InputStream 而不是 File 获取 Exif 数据?

我问这个的原因是因为文件选择器Intent的回调返回一个Uri。通过Intent打开文件选择器:Intentintent=newIntent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CONTENT);startActivityForResult(Intent.createChooser(intent,"SelectPicture"),CHOOSE_IMAGE_REQUEST);回调:@OverridepublicvoidonActivityResult(intrequestCode,intresult

android - 如何获取位图信息,然后从 internet-inputStream 解码位图?

背景假设我有一个来自互联网的某个图像文件的inputStream。我希望获取有关图像文件的信息,然后才对其进行解码。它有多种用途,例如下采样以及在显示图像之前预览信息。问题我试图通过用BufferedInputStream包装inputStream来标记和重置inputStream,但它没有用:inputStream=newBufferedInputStream(inputStream);inputStream.mark(Integer.MAX_VALUE);finalBitmapFactory.Optionsoptions=newBitmapFactory.Options();opt

android - 在 Android 的 BluetoothSocket inputstream.read() 中实现超时

是否可以在Android中的BluetoothSocket的inputstream.read()函数中实现超时?我试过使用Thread.sleep()但这只会暂停我的Activity。---更新---我有一个想法,在此处编写2个线程代码(t1和t2),其中每个线程中断其他线程,其中一个线程(t1)执行sleep(5000)然后中断另一个线程(t2),从另一侧其他线程(t2)如果在读取输入流时检测到某些字符为0x0D会中断另一个线程(t1),但这是我的问题,有人可以帮助我吗?因为我没有使用线程的interrupt()方法,希望有人能帮帮我,谢谢...---更新---publicvoidr

android - 如果 'x' 时间已经过去,则创建一个取消 InputStream.read() 调用的线程

我目前有一个来自Android的BluetoothChatExample的有效I/O流,但遇到了问题。我的应用程序通过蓝牙连接到蓝牙模块,蓝牙模块又向模块物理连接的设备发送信号。我的程序在输入流上调用read(),如果有数据正在发送,程序会顺利执行,没有任何问题。但是,流的实现方式无法防止连接中断。如果模块从设备上物理移除,或者如果设备没有发回任何信号,我的代码只是简单地等待InputStream.read()调用。我的read()调用如下所示:try{Log.i("1)I/O","availablebits:"+mmInStream.available());bytes=mmInSt

android - 你如何在 MediaPlayer 上播放 Android InputStream?

所以我的Assets文件夹中有一个小音频文件,我想打开一个InputStream写入缓冲区,然后写入一个临时文件,然后我打开MediaPlayer播放那个临时文件。问题是,当媒体播放器点击mp.Prepare()时,它不会播放并且永远不会到达toast。以前有人做过吗?publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);InputStreamstr;try{str=this.getAssets().open("onest