android app 与电脑wifi通信(二)
16lz
2021-01-26
前些天实现了简单字符的与电脑的传输,今天写写从电脑本地读取一张照片,然后传输给app,利用android bitmap在界面上显示出来
首先是电脑上的服务器端:
try { ServerSocket server = new ServerSocket(30002); Socket socket = server.accept(); DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); FileInputStream fis = new FileInputStream("D:/01.jpg"); int size = fis.available(); System.out.println("size = "+size); byte[] data = new byte[size]; fis.read(data); dos.write(data); dos.flush(); dos.close(); fis.close(); socket.close(); server.close(); } catch (IOException e) { e.printStackTrace(); }然后是客户端,注意在新线程中不能修改主线程中的界面,所以只能利用bundle发信号是主界面上的图片改变,网上好多版本,均有一些问题,以下是我自己想得觉得最简洁的写法了:
新建一个handler对象,接收子线程信号:
Handler myh=new Handler (){ @Override public void handleMessage(Message m){ if (m.what == 0x1233){ imageView.setImageBitmap(bmp);<span style="white-space:pre"></span>//修改图片 } } };下面是按钮的触发:
btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { new Thread() { @Override public void run() { try { Socket socket = new Socket("192.168.23.1", 30002); InputStream is=socket.getInputStream(); bmp = BitmapFactory.decodeStream(is); myh.sendEmptyMessage(0x1233);<span style="white-space:pre"></span>//向子线程发送命令 socket.close(); } catch (IOException e) { e.printStackTrace(); } } }.start();
}
虽然很简单但是自己也研究了好久,下一步是争取读视频,慢慢来。。。
更多相关文章
- android下的异步任务
- Android中的Handler总结(转帖)
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+Vie
- Android(安卓)NDK 线程回调Java层方法
- AOSP和Chromium的Android(安卓)WebViewTest
- Android(安卓)Chromium for WebView代码结构
- audio的输出设备切换分析
- okhttp3的基本使用
- Android(安卓)Handler的使用yu应该注意的问题