Android: ищем способ ускорить передачу изображений с Android на ПК через Wi-Fi - PullRequest
1 голос
/ 19 января 2011

Я пытаюсь быстро передавать изображения между телефоном Android и ПК через Wi-Fi.Я написал код, чтобы сделать это, но он может за 4-5 секунд передать одно изображение размером 640x480 пикселей.Мне интересно, мой метод имеет недостатки и есть ли более быстрый способ сделать это?

Вот код сервера

void main(String[] args)
{
        try {
             ServerSocket serverSocket = new ServerSocket(5555);
             Socket clientSocket = serverSocket.accept();

             long startTime = System.currentTimeMillis();
             InputStream clientInputStream = clientSocket.getInputStream();
             BufferedImage BI = ImageIO.read(clientInputStream);
             long endTime = System.currentTimeMillis();
             ImageIO.write(BI,"png",new File("test.png"));
             System.out.println((endTime - startTime) + " ms.");

             } catch (IOException e) 
             {
                e.printStackTrace();
             }     
}
}

Вот код клиента Android

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Bitmap imageToSend = BitmapFactory.decodeResource(this.getResources(),R.drawable.img);

    try 
    {
        Socket socket = new Socket("192.168.1.1",5555);         
        imageToSend.compress(CompressFormat.PNG,0 , socket.getOutputStream());          
    }        
    catch (Exception e) {
        e.printStackTrace();
    }
}

Спасибо за любую помощь, которую вы можете оказать.

1 Ответ

2 голосов
/ 19 января 2011

Две вещи, о которых я могу думать:

  • Используйте буферизованный выходной поток в вашем выводе, например,

    новый BufferedOutputStream (socket.getOutputStream ());

  • Сначала запишите образ на диск. Затем попробуйте открыть сокеты параллельно, каждый из которых передает различное смещение изображения (например, разделить изображение на 3 задания, передавая каждое параллельно другим). Это обойдёт некоторые варианты поведения TCP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...