Skip to content

Instantly share code, notes, and snippets.

@cliffgr
Created December 10, 2018 14:47
Show Gist options
  • Save cliffgr/dac791cb0ad41b718c19837cffddc362 to your computer and use it in GitHub Desktop.
Save cliffgr/dac791cb0ad41b718c19837cffddc362 to your computer and use it in GitHub Desktop.
package wizzo.mbc.net.activities;
import android.app.Activity;
import android.content.ContentProvider;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
import android.media.session.MediaController;
import android.net.TrafficStats;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.ToggleButton;
import android.widget.VideoView;
import com.flurry.android.FlurryAgent;
import com.orhanobut.logger.Logger;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.ByteArrayBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.InputStreamBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import mbc.analytics.sdk.agent.MbcAnalytics;
import me.gujun.android.taggroup.TagGroup;
import wizzo.mbc.net.Constants;
import wizzo.mbc.net.R;
import wizzo.mbc.net.WApplication;
import wizzo.mbc.net.fragments.UpdateMyProfileFragment;
import wizzo.mbc.net.utils.AppHelper;
import wizzo.mbc.net.utils.SessionManager;
public class VideoUploadActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener, View.OnClickListener {
String videoUrl;
VideoView videoView;
Spinner spinner;
TextView videoButton;
Uri uri;
FileInputStream anotFileInputStream;
FileDescriptor fd;
String[] bankNames = {"هجوم أو دفاع؟", "Test category QA video feature!@#$%", "بسيط ومدمن جدا", "PNB", "OBC"};
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_upload);
showToolbar();
TagGroup mTagGroup = (TagGroup) findViewById(R.id.tag_group);
spinner = findViewById(R.id.Spinner);
spinner.setOnItemSelectedListener(this);
ArrayAdapter aa = new ArrayAdapter(this, android.R.layout.simple_spinner_item, bankNames);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(aa);
videoView = findViewById(R.id.videoView);
videoButton = (TextView) findViewById(R.id.uploadVideo);
videoButton.setOnClickListener(this);
Intent intent = getIntent();
if (intent != null) {
videoUrl = intent.getStringExtra("videoUrl");
}
uri = Uri.parse(videoUrl);
if (uri.getAuthority() != null) {
Logger.d("Video url authority: " + uri.getAuthority());
}
final Uri uri = Uri.parse(videoUrl);
final Runnable timeoutCheck = new Runnable() {
public void run() {
ParcelFileDescriptor mInputPFD = null;
try {
mInputPFD = getContentResolver().openFileDescriptor(uri, "r");
fd = mInputPFD.getFileDescriptor();
anotFileInputStream = new FileInputStream(fd);
try {
Logger.d("Total file size to read (in bytes) : " + anotFileInputStream.available());
Thread updateThread = new Thread(new UpdateProfileTask());
updateThread.start();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
Logger.e("Video File not found.");
return;
} finally {
if (mInputPFD != null) {
try {
mInputPFD.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
};
timeoutCheck.run();
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.start();
mTagGroup.setTags("android", "demo", "Hack");
}
private void showToolbar() {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
try {
setSupportActionBar(toolbar);
} catch (NoClassDefFoundError e) {
Logger.d("Error initializing AppCompat Toolbar");
Logger.e(e.getCause(), e.getMessage());
AppHelper.showAlertDialog(this
, getString(R.string.errorAppCompatToolbarMessage)
, SignUpActivity.class);
}
getSupportActionBar().setTitle("");
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
;
@Override
public void onClick(View v) {
}
class UpdateProfileTask implements Runnable {
String mError;
int mTimeoutConnection = 15 * 1000;
int mTimeoutSocket = 15 * 1000;
int mStatusCode = 0;
private static final int THREAD_ID = 10000;
@Override
public void run() {
TrafficStats.setThreadStatsTag(THREAD_ID);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, mTimeoutConnection);
HttpConnectionParams.setSoTimeout(httpParameters, mTimeoutSocket);
httpClient.setParams(httpParameters);
HttpPost postRequest = new HttpPost("https://competition.mbc.net/wizzo_videos/api/SubmitVideo?key=f6ad442c164c54486b83d5cf12b3cdf77291eb69");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart("video", new InputStreamBody(anotFileInputStream,"test"));
builder.addBinaryBody("video", anotFileInputStream);
builder.addTextBody("secret", "7c35ff248907336322eee003f993905a6926dd45", ContentType.DEFAULT_BINARY);
builder.addTextBody("title", "xa");
builder.addTextBody("description", "xa");
builder.addTextBody("category_id", "5");
builder.addTextBody("wizzo_user_id", "12313121212");
builder.addTextBody("tagIds", "[4,5]");
HttpEntity entity = builder.build();
postRequest.setEntity(entity);
try {
HttpResponse httpResponse = httpClient.execute(postRequest);
HttpEntity entity2 = httpResponse.getEntity();
mStatusCode = httpResponse.getStatusLine().getStatusCode();
String json = EntityUtils.toString(entity2);
Logger.d("/api/profile response: " + json);
Header[] headers = httpResponse.getAllHeaders();
for (Header header : headers) {
System.out.println("Key : " + header.getName() + " ,Value : " + header.getValue());
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment