Dilan1991

Untitled

Apr 30th, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.37 KB | None | 0 0
  1. package id.enibbe.client.features.uploadaudio;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.database.Cursor;
  6. import android.media.AudioManager;
  7. import android.media.Image;
  8. import android.media.MediaPlayer;
  9. import android.net.Uri;
  10. import android.os.Build;
  11. import android.os.Bundle;
  12. import android.provider.DocumentsContract;
  13. import android.provider.MediaStore;
  14. import android.support.v7.app.AppCompatActivity;
  15. import android.support.v7.widget.Toolbar;
  16. import android.util.Log;
  17. import android.view.MenuItem;
  18. import android.view.View;
  19. import android.widget.Button;
  20. import android.widget.ImageView;
  21. import android.widget.MediaController;
  22. import android.widget.RelativeLayout;
  23. import android.widget.TextView;
  24. import android.widget.Toast;
  25. import android.widget.VideoView;
  26.  
  27. import com.victor.loading.rotate.RotateLoading;
  28.  
  29. import java.io.File;
  30. import java.io.FileNotFoundException;
  31. import java.io.FileOutputStream;
  32. import java.io.IOException;
  33. import java.io.InputStream;
  34. import java.io.OutputStream;
  35. import java.net.URI;
  36. import java.net.URISyntaxException;
  37. import java.util.List;
  38.  
  39. import butterknife.BindView;
  40. import butterknife.ButterKnife;
  41. import id.enibbe.client.R;
  42. import id.enibbe.client.features._common.model.CommonResponse;
  43. import id.enibbe.client.ui.CommonDialogs;
  44. import id.enibbe.client.utils.Utils;
  45.  
  46.  
  47. public class UploadAudioActivity extends AppCompatActivity implements IUploadAudioView {
  48.  
  49. @BindView(R.id.submit_button)
  50. Button mSubmitButton;
  51. @BindView(R.id.browse_button)
  52. Button mBrowseButton;
  53. @BindView(R.id.preview_image)
  54. ImageView audioPreview;
  55. @BindView(R.id.filepath_text)
  56. TextView mPathText;
  57. // @BindView(R.id.capture_button)
  58. // Button mCaptureButton;
  59. @BindView(R.id.loading_indicator)
  60. RelativeLayout mLoadingIndicator;
  61. @BindView(R.id.base_layout)
  62. RelativeLayout mBase;
  63. @BindView(R.id.toolbar)
  64. Toolbar mToolbar;
  65. @BindView(R.id.rotateloading)
  66. RotateLoading rotateLoading;
  67. @BindView(R.id.percentage_text)
  68. TextView percentageText;
  69.  
  70. private static final int PICK_AUDIO = 110;
  71. Uri mUri;
  72. Context mContext;
  73. String mFilepath;
  74. private static final int REQUEST_CODE_SELECT_AUDIO_FILE = 1;
  75. protected static final int REQ_CODE_PICK_SOUNDFILE = 0;
  76. private Uri audioFileUri = null;
  77. private MediaPlayer audioPlayer = null;
  78.  
  79.  
  80. UploadAudioPresenter presenter;
  81.  
  82.  
  83. @Override
  84. public boolean onOptionsItemSelected(final MenuItem item) {
  85. int id = item.getItemId();
  86. if (id == android.R.id.home) {
  87. finish();
  88. }
  89. return super.onOptionsItemSelected(item);
  90. }
  91.  
  92.  
  93. @Override
  94. protected void onCreate(Bundle savedInstanceState) {
  95. super.onCreate(savedInstanceState);
  96. setContentView(R.layout.activity_upload_audio);
  97.  
  98. ButterKnife.bind(this);
  99. mToolbar.setTitleTextColor(getResources().getColor(R.color.colorAccent));
  100. setSupportActionBar(mToolbar);
  101. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  102. mContext = this;
  103. presenter = new UploadAudioPresenter(this);
  104. this.setupViews();
  105. }
  106.  
  107.  
  108. @Override
  109. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  110. super.onActivityResult(requestCode, resultCode, data);
  111.  
  112. if (requestCode == REQ_CODE_PICK_SOUNDFILE){
  113. if (resultCode == RESULT_OK) {
  114. if ((data != null) && (data.getData() != null)){
  115. mUri = data.getData();
  116.  
  117. String id = data.getData().toString();
  118. try {
  119. InputStream inputStream = getContentResolver().openInputStream(mUri);
  120. File file = new File(id);
  121. writeFile(inputStream, file);
  122. String filePath = mUri.getPath();
  123. filePath.replaceAll("(^/root)", "");
  124. mFilepath =filePath.replaceAll("(^/root)", "");
  125. Log.d("makans", "onActivityResult: "+data.getData());
  126. audioPreview.setImageDrawable(getResources().getDrawable(R.drawable.audio_wave));
  127. mPathText.setText(mFilepath);
  128. } catch (FileNotFoundException e) {
  129. e.printStackTrace();
  130. }
  131. }
  132. }
  133. }
  134.  
  135. }
  136.  
  137. void writeFile(InputStream in, File file) {
  138. OutputStream out = null;
  139. try {
  140. out = new FileOutputStream(file);
  141. byte[] buf = new byte[1024];
  142. int len;
  143. while((len=in.read(buf))>0){
  144. out.write(buf,0,len);
  145. }
  146. } catch (Exception e) {
  147. e.printStackTrace();
  148. }
  149. finally {
  150. try {
  151. if ( out != null ) {
  152. out.close();
  153. }
  154. in.close();
  155. } catch ( IOException e ) {
  156. e.printStackTrace();
  157. }
  158. }
  159. }
  160. public String getRealPathFromURI(Context context, Uri contentUri) {
  161. Cursor cursor = null;
  162. try {
  163. String[] proj = { MediaStore.Images.Media.DATA };
  164. cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
  165. int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  166. cursor.moveToFirst();
  167. return cursor.getString(column_index);
  168. } finally {
  169. if (cursor != null) {
  170. cursor.close();
  171. }
  172. }
  173. }
  174. @Override
  175. public void setupViews() {
  176. mSubmitButton.setOnClickListener(v -> {
  177. if (mFilepath != null) {
  178. presenter.uploadAudio(mFilepath);
  179. } else {
  180. Toast.makeText(mContext, "Silahkan pilih Audio", Toast.LENGTH_LONG).show();
  181. }
  182. });
  183.  
  184. mBrowseButton.setOnClickListener(v -> selectAudioFile());
  185. //mCaptureButton.setOnClickListener(view -> presenter.recordVideo(this, PICK_AUDIO));
  186. }
  187. // private void initAudioPlayer()
  188. // {
  189. // try {
  190. // if(audioPlayer == null)
  191. // {
  192. // audioPlayer = new MediaPlayer();
  193. //
  194. // String audioFilePath = audioFilePathEditor.getText().toString().trim();
  195. //
  196. // Log.d(TAG_PLAY_AUDIO, audioFilePath);
  197. //
  198. // if(audioFilePath.toLowerCase().startsWith("http://"))
  199. // {
  200. // // Web audio from a url is stream music.
  201. // audioPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  202. // // Play audio from a url.
  203. // audioPlayer.setDataSource(audioFilePath);
  204. // }else
  205. // {
  206. // if(audioFileUri != null)
  207. // {
  208. // // Play audio from selected local file.
  209. // audioPlayer.setDataSource(getApplicationContext(), audioFileUri);
  210. // }
  211. // }
  212. // audioPlayer.prepare();
  213. // }
  214. // }catch(IOException ex)
  215. // {
  216. // Log.e(TAG_PLAY_AUDIO, ex.getMessage(), ex);
  217. // }
  218. // }
  219. private void selectAudioFile()
  220. {
  221. Intent intent;
  222. intent = new Intent();
  223. intent.setAction(Intent.ACTION_GET_CONTENT);
  224. intent.setType("audio/mpeg");
  225. startActivityForResult(Intent.createChooser(intent, "Choose Audio"), REQ_CODE_PICK_SOUNDFILE);
  226. }
  227. @Override
  228. public void showLoadingIndicator() {
  229. percentageText.setVisibility(View.VISIBLE);
  230. mLoadingIndicator.setVisibility(View.VISIBLE);
  231. mBase.setVisibility(View.GONE);
  232. rotateLoading.start();
  233. }
  234.  
  235. @Override
  236. public void hideLoadingIndicator() {
  237. percentageText.setText("");
  238. percentageText.setVisibility(View.GONE);
  239. mLoadingIndicator.setVisibility(View.GONE);
  240. mBase.setVisibility(View.VISIBLE);
  241. rotateLoading.stop();
  242. }
  243.  
  244. @Override
  245. public void onUploadSuccess(CommonResponse response) {
  246. CommonDialogs.commonSuccess(this, response.getRm(), new CommonDialogs.Listener() {
  247. @Override
  248. public void onClicked() {
  249. finish();
  250. }
  251.  
  252. @Override
  253. public void onTokeninvalid() {
  254.  
  255. }
  256. });
  257. }
  258.  
  259. @Override
  260. public void onUploadFailed(String message) {
  261. CommonDialogs.commonWarning(this, message, new CommonDialogs.Listener() {
  262. @Override
  263. public void onClicked() {
  264. finish();
  265. }
  266.  
  267. @Override
  268. public void onTokeninvalid() {
  269. Utils.logout(UploadAudioActivity.this);
  270. }
  271. });
  272. }
  273.  
  274. @Override
  275. public void onNetworkError(String cause) {
  276. Log.e("list", cause);
  277. CommonDialogs.endPointError(this, new CommonDialogs.Listener() {
  278. @Override
  279. public void onClicked() {
  280. finish();
  281. }
  282.  
  283. @Override
  284. public void onTokeninvalid() {
  285.  
  286. }
  287. });
  288. }
  289.  
  290. @Override
  291. public void onProgress(int percent) {
  292. percentageText.setText(""+percent+"%");
  293. }
  294. }
Advertisement
Add Comment
Please, Sign In to add comment