精华内容
下载资源
问答
  • 实现将本地存储的图片发送到后台使用springMVC框架,获取本地图片,转换成流输出@RequestMapping(value="showImageDiaLog.do",params={"action=showImageDiaLog"})public void showImageByType(String filename,...

    实现将本地存储的图片发送到后台

    使用springMVC框架,获取本地图片,转换成流输出

    @RequestMapping(value="showImageDiaLog.do",params={"action=showImageDiaLog"})

    public void showImageByType(String filename,HttpServletRequest request,HttpServletResponse response) throws IOException{

    InputStream inputStream = null;

    OutputStream writer = null;

    filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");

    try {

    inputStream = new FileInputStream(new File(Constants.getApplicationValue("C\:\\\myeclipseWork\\image\\")+filename));

    writer = response.getOutputStream();

    byte[] buf = new byte[1024];

    int len = 0;

    while ((len = inputStream.read(buf)) != -1) {

    writer.write(buf, 0, len); //写

    }

    } catch (Exception e) {

    logger.error(e.toString());

    } finally{

    if(inputStream != null){

    inputStream.close();

    }

    if(writer != null){

    writer.close();

    }

    }

    }

    Android代码

    请求地址,出入请求的文件名

    private String url = "http://192.168.1.132:8080/eSAM/showImageDiaLog.do?action=showImageDiaLog&filename=1.jpg";

    使用glide框架获取图片展示

    Glide.with(MainActivity.this)

    .load(url)

    .into(imageView);

    保存在本地,工具类

    package com.example.image;

    import android.content.Context;

    import android.os.Environment;

    import android.util.Log;

    import android.widget.Toast;

    import com.bumptech.glide.Glide;

    import com.bumptech.glide.request.animation.GlideAnimation;

    import com.bumptech.glide.request.target.SimpleTarget;

    import java.io.File;

    import java.io.FileOutputStream;

    /**

    * Created by user on 20/9/2017.

    */

    public class SDFileHelper {

    private Context context;

    public SDFileHelper() {

    }

    public SDFileHelper(Context context) {

    super();

    this.context = context;

    }

    //Glide保存图片

    public void savePicture(final String fileName, String url){

    Glide.with(context).load(url).asBitmap().toBytes().into(new SimpleTarget() {

    @Override

    public void onResourceReady(byte[] bytes, GlideAnimation super byte[]> glideAnimation) {

    try {

    savaFileToSD(fileName,bytes);

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    });

    }

    //往SD卡写入文件的方法

    public void savaFileToSD(String filename, byte[] bytes) throws Exception {

    //如果手机已插入sd卡,且app具有读写sd卡的权限

    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

    String filePath = Environment.getExternalStorageDirectory().getCanonicalPath()+"/budejie";

    File dir1 = new File(filePath);

    if (!dir1.exists()){

    dir1.mkdirs();

    }

    filename = filePath+ "/" + filename;

    //这里就不要用openFileOutput了,那个是往手机内存中写数据的

    FileOutputStream output = new FileOutputStream(filename);

    output.write(bytes);

    //将bytes写入到输出流中

    output.close();

    //关闭输出流

    Toast.makeText(context, "图片已成功保存到"+filePath, Toast.LENGTH_SHORT).show();

    Log.e("filePath:",filePath);

    } else {

    Toast.makeText(context, "SD卡不存在或者不可读写", Toast.LENGTH_SHORT).show();

    }

    }

    }

    保存在sd卡

    //保存图片在本地

    SDFileHelper helper = new SDFileHelper(MainActivity.this);

    helper.savePicture("b.jpg",url);

    展开全文
  • 蓝牙文件传输Android

    2021-06-06 15:39:20
    较小的文件正确传输.我相信正确传输高达161280字节.编辑:我做了一些测试并缩小了原因.看起来outStream.write(mybytearray, 0, mybytearray.length);在发送代码部分不写超过161280字节.我通过不关闭套接字连接看到了...

    我在通过蓝牙套接字发送大文件时遇到问题.较小的文件正确传输.我相信正确传输高达161280字节.

    编辑:我做了一些测试并缩小了原因.看起来

    outStream.write(mybytearray, 0, mybytearray.length);

    在发送代码部分不写超过161280字节.我通过不关闭套接字连接看到了这种行为,从而导致接收部分中的读取在161280字节上“阻塞”.这里的蓝牙输出流有什么问题?我究竟做错了什么?

    编辑2:

    这样做可以让它通过.

    for(int i = 0 ; i < mybytearray.length ; i++){

    outStream.write(mybytearray[i]);

    }

    发送代码:

    try {

    outStream = mBluetoothSocket.getOutputStream();

    Log.d(TAG,"outStream created success!");

    } catch (IOException e) {

    Log.d(TAG,

    "ON RESUME: Output stream creation failed.",

    e);

    }

    File myFile = new File(file_name);

    Log.d(TAG,"file /source.pdf created success!");

    byte[] mybytearray = new byte[(int)myFile.length()];

    Log.d(TAG,"file length() =" + (int)myFile.length());

    FileInputStream fis = new FileInputStream(myFile);

    Log.d(TAG,"fis created");

    BufferedInputStream bis = new BufferedInputStream(fis,1272254 );

    Log.d(TAG,"bis created success");

    bis.read(mybytearray,0,mybytearray.length);

    Log.d(TAG,"ALL Bytes read from bis");

    outStream.write(mybytearray, 0, mybytearray.length);

    Log.d(TAG,"BYTES WRITTEN to OUTSTREAM of socket");

    outStream.flush();

    Log.d(TAG,"bytes flushed");

    outStream.close();

    收货代码:

    // Attach the i/p stream to the socket

    try {

    InputStream in = socket.getInputStream();

    mIn = in;

    Log.d(TAG, "input stream acquired");

    } catch (IOException e1) {

    e1.printStackTrace();

    }

    // Create output streams & write to file

    FileOutputStream fos = new FileOutputStream(

    Environment.getExternalStorageDirectory()

    + "/copy.pdf");

    try {

    bytesRead = mIn.read(buffer, 0, buffer.length);

    Log.d(TAG, "bytesRead first time =" + bytesRead);

    current = bytesRead;

    do {

    Log.d(TAG, "do-while -- current: " + current);

    bytesRead = mIn.read(buffer, current,

    buffer.length - current);

    Log.d(TAG, "bytesRead: =" + bytesRead);

    if (bytesRead >= 0)

    current += bytesRead;

    } while (bytesRead > -1);

    } catch (IOException e) {

    e.printStackTrace();

    Log.d(TAG, "do while end:-- buffer len= "

    + buffer.length + " current: " + current);

    fos.write(buffer);

    Log.d(TAG, "fos.write success! buffer: "

    + buffer.length + " current: " + current);

    fos.flush();

    fos.close();

    }

    }

    socket.close();

    logcat的:

    D/ReceiveService( 5761): do-while -- current: 155232

    D/ReceiveService( 5761): bytesRead: =1008

    D/ReceiveService( 5761): do-while -- current: 156240

    D/ReceiveService( 5761): bytesRead: =1008

    D/ReceiveService( 5761): do-while -- current: 157248

    D/ReceiveService( 5761): bytesRead: =1008

    D/ReceiveService( 5761): do-while -- current: 158256

    D/ReceiveService( 5761): bytesRead: =1008

    D/ReceiveService( 5761): do-while -- current: 159264

    D/ReceiveService( 5761): bytesRead: =1008

    D/ReceiveService( 5761): do-while -- current: 160272

    D/ReceiveService( 5761): bytesRead: =1008

    D/ReceiveService( 5761): do-while -- current: 161280

    W/System.err( 5761): java.io.IOException: Software caused connection abort

    W/System.err( 5761): at android.bluetooth.BluetoothSocket.readNative(Native Method)

    W/System.err( 5761): at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:307)

    W/System.err( 5761): at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:96)

    W/System.err( 5761): at com.bt.server.ReceiveService$AcceptThread.run(ReceiveService.java:141)

    我正在使用摩托罗拉里程碑. Android 2.1

    展开全文
  • 我试图通过rtsp将视频流式传输Android手机。我认为我的SDP并不完全正确,手机不喜欢它。以下是手机中的痕迹。任何想法导致玩家放弃的SDP有什么问题?通过RTSP将视频流式传输Android10-08 14:11:22.657 I/...

    我试图通过rtsp将视频流式传输至Android手机。我认为我的SDP并不完全正确,手机不喜欢它。以下是手机中的痕迹。任何想法导致玩家放弃的SDP有什么问题?通过RTSP将视频流式传输至Android

    10-08 14:11:22.657 I/RTSPEngine(5031): RTSP Server response:

    10-08 14:11:22.657 I/RTSPEngine(5031): RTSP/1.0 200 OK

    10-08 14:11:22.657 I/RTSPEngine(5031): CSeq: 0

    10-08 14:11:22.657 I/RTSPEngine(5031): Date: Fri, 8 Oct 2010 21:11:24 GMT

    10-08 14:11:22.657 I/RTSPEngine(5031): Expires: Fri, 8 Oct 2010 21:11:24 GMT

    10-08 14:11:22.657 I/RTSPEngine(5031): Last-Modified: Fri, 8 Oct 2010 21:11:24 GMT

    10-08 14:11:22.657 I/RTSPEngine(5031): Session: 123456

    10-08 14:11:22.657 I/RTSPEngine(5031): Content-Type: application/sdp

    10-08 14:11:22.657 I/RTSPEngine(5031): Content-Length: 207

    10-08 14:11:22.657 I/RTSPEngine(5031):

    10-08 14:11:22.657 I/RTSPEngine(5031): v=0

    10-08 14:11:22.657 I/RTSPEngine(5031): o=- 21070 3 IN IP4 0.0.0.0

    10-08 14:11:22.657 I/RTSPEngine(5031): c=IN IP4 0.0.0.0

    10-08 14:11:22.657 I/RTSPEngine(5031): s=xxxxx H.263 video stream

    10-08 14:11:22.657 I/RTSPEngine(5031): i=Video stream

    10-08 14:11:22.657 I/RTSPEngine(5031): t=0 0

    10-08 14:11:22.657 I/RTSPEngine(5031): m=video 0 RTP/AVP 103

    10-08 14:11:22.657 I/RTSPEngine(5031): a=rtpmap:103 H263-1998/90000

    10-08 14:11:22.657 I/RTSPEngine(5031): a=fmtp:103 profile=0; level=40

    10-08 14:11:22.657 I/RTSPEngine(5031): b=TIAS:2048000

    10-08 14:11:22.667 E/PlayerDriver(5031): Command PLAYER_INIT completed with an error or info PVMFErrNotSupported

    10-08 14:11:22.667 E/MediaPlayer(13821): error (1, -4)

    在此先感谢您的帮助

    问候

    菲尔

    +0

    这是引发错误的MediaPlayer,而不是rtsp客户端。这相当于你的视频文件的标题不正确,至少是imho。 –

    2010-10-08 21:47:41

    +0

    感谢您的评论,但我不这么认为。在这一点上我还没有流媒体。这只是RTSP DESCRIBE的答案 - 我期待接下来的SETUP告诉服务器要传输哪些端口。我试图理解为什么android在这个阶段出来,我可以改变,以确保它不会 –

    2010-10-08 22:27:29

    展开全文
  • 发送线程把本地文件FileInputStream读取的数据写到aos 服务端: ParcelFileDescriptor.AutoCloseInputStream ais = new ParcelFileDescriptor.AutoCloseInputStream(input); //input是传过来的pfd[0] 接收线程把ais...

    需求:

    客户端通过AIDL传一段文件流给服务端,服务端根据流还原生成文件并打开

    前置条件:

    不赘述AIDL的使用方法

    示例代码不做详细的容错处理

    想法:

    如果要通过AIDL把一个文件流传输到另一端,临时可以想得到的一个方法是:

    client端的线程通过FileInputStream每次read一个缓冲,通过AIDL相应的去调用server端的方法,把这个缓冲区的byte数组传递到server端,然后server端通过FileOutputStream把这些byte数组write到新生成的临时文件即可。

    但这种方法的弊端就是在文件传输期间会阻塞server端。众所周知,service是运行在应用的主线程中的,如果service中出现了很多不在其子线程中运行的阻塞或耗时操作,肯定会影响整个应用的流畅性的,所以这种方法不可行。

    解决方法:

    问题的关键是如何把接收的过程放到server端的线程中?解决方法是使用管道!但是Android进程间通信用Binder来传递数据,有一个最基本的要求就是要实现Parcelable接口。所以这里就需要用到:

    ParcelFileDescriptor[] pfd = ParcelFileDescriptor.createPipe();

    pfd[0]是管道的read端

    pfd[1]是管道的write端

    简单流程说明:

    客户端:

    先把pfd[0]通过AIDL调用传输给服务端,然后

    ParcelFileDescriptor.AutoCloseOutputStream aos = new ParcelFileDescriptor.AutoCloseOutputStream(pfd[1]);

    发送线程把本地文件FileInputStream读取的数据写到aos

    服务端:

    ParcelFileDescriptor.AutoCloseInputStream ais = new ParcelFileDescriptor.AutoCloseInputStream(input); //input是传过来的pfd[0]

    接收线程把ais中读取的数据写到临时文件的FileOutputStream中

    06be06d32bc7b4c44843c250820cf50f.png

    概要流程说明

    简单代码片段

    AIDL文件:

    package com.test.aidlservice;

    interface ITestInterface

    {

    void openFile(String fileName, in ParcelFileDescriptor input);

    }

    服务端:

    package com.test.aidlservice;

    public class TestService extends Service

    {

    @Nullable

    @Override

    public IBinder onBind(Intent intent)

    {

    return new TestBinder();

    }

    class TestBinder extends ITestInterface.Stub

    {

    @Override

    public void openFile(String fileName, ParcelFileDescriptor input) throws

    RemoteException

    {

    // 通过管道的read端包装输入流

    ParcelFileDescriptor.AutoCloseInputStream autoCloseInputStream =

    new ParcelFileDescriptor.AutoCloseInputStream(input);

    // 生成临时文件路径

    String path = Environment.getExternalStorageDirectory().toString();

    path = path + "/temp_" + fileName;

    // 把流存到临时文件中

    try

    {

    new OpenFileTask(path, autoCloseInputStream).execute();

    }

    catch (FileNotFoundException e)

    {

    e.printStackTrace();

    }

    }

    }

    }

    OpenFileTask的任务就是通过传入的临时文件path生成对应的FileOutputStream,然后把autoCloseInputStream读出的数据写入到FileOutputStream中。整个文件写完后,调用startActivity打开对应格式的文件,在此不再赘述。

    客户端:

    private ITestInterface mTestService = null;

    private ServiceConnection mConnection = new ServiceConnection()

    {

    @Override

    public void onServiceConnected(ComponentName name, IBinder service)

    {

    mTestService = ITestInterface.Stub.asInterface(service);

    }

    @Override

    public void onServiceDisconnected(ComponentName name)

    {

    mTestService = null;

    }

    };

    bind部分:

    Intent intent = new Intent();

    intent.setAction("com.test.aidl.ITestInterface");

    intent.setPackage("com.test.aidlservice");

    bindService(intent, mConnection, BIND_AUTO_CREATE);

    传输部分:

    //获取一个需要被服务端打开的测试文件

    String filePath = Environment.getExternalStorageDirectory().toString() + "/test.docx";

    try

    {

    ParcelFileDescriptor[] pfd = ParcelFileDescriptor.createPipe();

    ParcelFileDescriptor.AutoCloseOutputStream autoCloseOutputStream = new ParcelFileDescriptor.AutoCloseOutputStream(pfd[1]);

    new WriteFileTask(filePath, autoCloseOutputStream).execute();

    mTestService.openFile("test.docx", pfd[0]);

    }

    catch (IOException e)

    {

    e.printStackTrace();

    }

    catch (RemoteException e)

    {

    e.printStackTrace();

    }

    WriteFileTask的任务就是通过传入的文件path生成对应的FileInputStream,然后读取FileInputStream中的数据写入到autoCloseOutputStream中即可。

    展开全文
  • 我正在开发一个业余爱好项目,其目标是开发一个Android应用程序,该应用程序能够使用FFMpeg作为底层引擎,在LAN设置中通过网络摄像头传输实时源.到目前为止,我做了以下 –A.为以下版本编译和生成FFMpeg相关库 –FFMpeg...
  • 但是,没有电缆通常意味着您无法快速将文件传输到他人的计算机。 即使大多数现代笔记本电脑都允许您创建Wi-Fi热点,但并非所有手机都允许您轻松设置共享权限,以实现计算机与手机之间的文件传输。 尽管有一些电话...
  • 参见英文答案 >...16个我一直在尝试使用类似的东西将文件从我的Android设备移动到我的osx机器:adb shell tar -c directory_to_copy | tar -x.似乎远程tar正在工作,但文件被破坏的方式.经过一番游...
  • 所以我解决了我的问题。问题主要在接收方。接收器接收音频流,并将其推送到PC的扬声器。产生的声音仍然很漫长和破碎,但是仍然有效。...Android代码:package com.example.mictest2;import java.io.IOException;...
  • 学更好的别人,做更好的自己。——《微卡智享》本文长度为4578字,预计阅读7分钟前言在开发初期,当Android端嵌入在硬件中,并且本地数据库单机业务逻辑挺多,往往要分析数据是否处理正常,...
  • 在移动应用开发中, 对于数据安全传输要求非常高, 尤其是涉及到用户财产安全的时候,都会对数据进行层层加密来确保数据的安全性 完整性;`在这里演示:我将演示银行在移动应用上的数据加密;传输的数据格式: json (别...
  • 软餐(ruancan.com)获悉,Mac 上的第三方安卓文件传输应用 ...一直以来,在 macOS 和 Android传输文件并不顺畅,谷歌官方的 “Android 文件传输” 应用十分难用,且存在诸多限制。OpenMTP 是开发者 Ganesh Ra...
  • 开发Android程序时涉及到网络通信,能不能像开发PC的Web应用一样,将本地PC机当服务器用呢?很显然,这个技术性问题肯定有NB的人能搞定。经过本人一番搜索 + 亲身测试,得出结论如下:(1)将Android手机通过USB数据线...
  • 前言项目中经常要选择本地照片或者视频的需求,如果去扫描整个SD卡就太耗时间,其实Android系统在启动时就已经把整个设备中的多媒体文件信息(文件名,类型,大小等)都存到了数据库,然后提供了ContentPrivider这个...
  • 这让很多用户都在寻找将文件从Android传输到Mac的最佳方式。今天,您将了解将重要数据从Android设备发送到Mac的不同方法。但是,在您了解这些方法之前,您是否遇到过这样的情况:您想要将一个重要的文件从Android小...
  • 通过在同一网络中设置计算机文件夹共享,移动设备可以从计算机的硬盘驱动器中自由读取文件,例如视频.Android设备需要安装两个APP: ES文件浏览器和MX Player. 因为它们更常用,所以估计已经安装了许多朋友的手机,而...
  • 安卓10加载本地文件

    2021-02-06 17:31:11
    最近使用华为P40(安卓10)进行文件传输时,发现怎么都不能正确加载文件…… 给权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name=...
  • 我正在开发基于WiFi的直接文件传输应用程序。我可以看到使用TCP套接字的传输速度并不令人满意。速度通常为1毫巴/秒。每当我分析数据传输图时,我可以看到很多峰值,许多秒根本没有数据传输。我知道传输速度应该高很...
  • MXPlayer早前老夜就分享过了并且一直在整理更新版本,随着在线视频播放的快捷与便利下载视频至本地播放的人群越来越少,但仍大有人在,首先在线播放的画质多多少少都有些损耗,其次就是受限于网络环境,最最最重要的...
  • 我一直在尝试从我的Android设备移动文件到我的osx机器使用类似于:adb shell tar -c directory_to_copy | tar -x.似乎远程tar正在工作,但文件损坏的方式.经过一些玩耍,我发现:>似乎adb shell命令将LF转换为CRLF...
  • getUserMedia约束对之后的流已经做了什么影响(即,当通过连接流式传输时).你看到的恶化是在PeerConnection层,而不是在getUserMedia层.硬件和带宽统计数据表示低性能,并由双方进行协商,由webrtc实现引发降级....
  • 废话不多,直接上代码!!!!! 布局代码如下: ...xml version="1.0" encoding="utf-8"?...LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ... android:orientation="ve
  • 我想使用SoundPool类创建播放速度效果。快速或慢速播放声音(1x,0.5x,2x等)。 但问题是,soundpool只处理小文件。...将音频文件流式传输到soundpool load()Android这里是我的代码的Soundpool播放歌曲AudioManager...
  • 前几天,我们客户端这边收到了市场部的一个需求,需要在我们订单成交后,我们的客户端有一个上传交易凭证的功能,那么如何在Android实现上传图片的这个功能呢?在我进行编码之前,我先问自己几个问题。第一, 图片是...
  • 由于我也是初学android,做一个app也是在一边学更多的知识,一边写这个项目,但是这个功能折磨了我很多天,如果这个功能实现不了,后面的工作都无法进行。 我之前应用其他人的方法放在我的项目里,要传输一个几十
  • 这一篇将介绍WebRTC中最核心的概念PeerConnection , 给同一手机中的前后摄像头建立虚拟的连接, 相互传输画面.PeerConnectionPeerConnection也就是Peer-to-Peer connection(P2P), 就是两个"人"的连接. 双方分别创建...
  • Android提供了多种选择来保存永久性的数据,根据不同的需求来使用不同的保存方式,一般情况下,保存数据的方式有下面几种:SharedPreferences内部存储外部存储SQLite网络连接下面主要来看一下前四种数据保存方式。...
  • 近期本人在做安卓设备的云平台,设备云平台这个东西相信对大家而言并不陌生,常见的功能比如用来远程监控操作一部手机,上传文件啊,查看日志之类的。但是当你想用云手机看视频、玩游戏、听音乐的时候,就发现,现在...
  • Android蓝牙API提供诸如发现,连接和使用流的数据传输(InputStream和OutputStream)等基本功能。使用蓝牙传输文件需要很多编码。我们需要管理设备发现,连接,IO等。现在我发现使用蓝牙发送文件的方法非常简单。 ...
  • 对于Java的序列化与反序列化网上的详解很多,这里就不一一复述了所谓的Serializable,就是java提供的通用数据保存和读取的...也可以用管道来传输到系统的其他程序中。这样子极大的简化了类的设计。只要设计一个保存...
  • AsyncHttpHelp是一个android平台下基于httpclient开发的HTTP网络请求工具。优点功能齐全,提供常用的http网络访问接口。轻量级,无任何第三方库依赖,库大小为90K左右。定制化,自定义json解析库,支持请求参数,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,876
精华内容 17,950
关键字:

安卓本地传输