Android Open Source - screenshare-playground Receiver Async Task






From Project

Back to project page screenshare-playground.

License

The source code is released under:

GNU General Public License

If you think the Android project screenshare-playground listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (c) 2015 Renard Wellnitz./* ww w.  ja  v a 2s. c  o  m*/
 *
 *  This file is part of ScreenShare.
 *
 *     Foobar is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     Foobar is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.screenshare.renard314.decoder;

import android.os.AsyncTask;
import android.util.Log;
import android.util.Pair;

import com.screenshare.renard314.screensharelib.VideoChunk;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by renard on 22/12/14.
 */
public class ReceiverAsyncTask extends AsyncTask<Void,VideoChunk,Void>{

  private static final String LOG_TAG = ReceiverAsyncTask.class.getSimpleName();


  interface ReceiverListener {
    void onVideoChunk(VideoChunk chunk);
        void onConnectionLost();
    }

  private ServerSocket mServerSocket;
  private final ReceiverListener mListener;

  ReceiverAsyncTask(ReceiverListener listener) {
    this.mListener = listener;
  }

  @Override
  protected Void doInBackground(Void... params) {
        Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
        final Socket accept;
    try {
      mServerSocket = new ServerSocket(1234);
      Log.i(LOG_TAG, "waiting for connection");
      accept = mServerSocket.accept();
      Log.i(LOG_TAG, "Socket accepted");
    } catch (IOException e) {
      e.printStackTrace();
      return null;
    }
    final DataInputStream inputStream;
    try {
      inputStream = new DataInputStream(accept.getInputStream());
    } catch (IOException e) {
      e.printStackTrace();
      return null;
    }
    while(!isCancelled()){
      try {
        int length  = inputStream.readInt();
        int flags  = inputStream.readInt();
        long timeUs  = inputStream.readLong();
        byte[] data = new byte[length];
        inputStream.readFully(data, 0, length);
        VideoChunk chunk = new VideoChunk(data,flags,timeUs);
                publishProgress(chunk);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    return null;
  }

    @Override
    protected void onPostExecute(Void aVoid) {
        mListener.onConnectionLost();
    }

    @Override
  protected void onProgressUpdate(VideoChunk... values) {
    super.onProgressUpdate(values);
    mListener.onVideoChunk(values[0]);
  }
}




Java Source Code List

com.screenshare.renard314.decoder.ApplicationTest.java
com.screenshare.renard314.decoder.MainActivity.java
com.screenshare.renard314.decoder.MyApplication.java
com.screenshare.renard314.decoder.ReceiverAsyncTask.java
com.screenshare.renard314.screenshare.ApplicationTest.java
com.screenshare.renard314.screenshare.EncoderAsyncTask.java
com.screenshare.renard314.screenshare.MainActivity.java
com.screenshare.renard314.screenshare.SenderAsyncTask.java
com.screenshare.renard314.screensharelib.ApplicationTest.java
com.screenshare.renard314.screensharelib.DecoderAsyncTask.java
com.screenshare.renard314.screensharelib.MediaCodecFactory.java
com.screenshare.renard314.screensharelib.OnVideoSizeChangedListener.java
com.screenshare.renard314.screensharelib.VideoChunk.java