Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.74 KB | None | 0 0
  1. public class PlayerActivity extends AppCompatActivity {
  2.  
  3. private String radioUrl;
  4. private String radioTitle;
  5. private int radioID;
  6.  
  7. File currentFile;
  8. private int totalKbRead = 0;
  9.  
  10. public static final int REQUEST_CODE_PERMISSION_WRITE_EXTERNAL_STORAGE = 1;
  11.  
  12. private String MAYBE_ACTION = "MAYBE_ACTION";
  13. public static boolean isPlay = false;
  14. ImageButton btnPLayPause;
  15. private TextView txtRadio;
  16.  
  17. private Button btnStopRecord;
  18. private Button btnRecord;
  19. private boolean isRecord = false;
  20.  
  21. private String internetStatus = "";
  22.  
  23. BroadcastReceiver br;
  24. BroadcastReceiver serviceReceiver;
  25. public final static String SERVICE_PARAM = "param";
  26. public final static int SERVICE_STATUS = 0;
  27. public final static String BROADCAST_ACTION = "com.example.myradio";
  28.  
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.activity_player);
  33.  
  34. radioID = getIntent().getExtras().getInt("id");
  35. radioUrl = getIntent().getExtras().getString("url");
  36. radioTitle = getIntent().getExtras().getString("title");
  37.  
  38. btnPLayPause = (ImageButton) findViewById(R.id.btnPLayPause);
  39. txtRadio = (TextView) findViewById(R.id.txtRadio);
  40.  
  41. btnStopRecord = findViewById(R.id.btnStopRecord);
  42. btnRecord = findViewById(R.id.btnRecord);
  43.  
  44. setTitle(radioTitle);
  45. txtRadio.setText(radioTitle);
  46.  
  47. if (NetworkUtil.getConnectivityStatus(this) != 0) {
  48. startPlayerService();
  49. }
  50.  
  51. br = new BroadcastReceiver() {
  52. @Override
  53. // действия при получении сообщений
  54. public void onReceive(Context context, Intent intent) {
  55. finish();
  56. }
  57. };
  58. IntentFilter intentFilter = new IntentFilter(MAYBE_ACTION);
  59. registerReceiver(br, intentFilter);
  60.  
  61. btnRecord.setOnClickListener(new View.OnClickListener() {
  62. @Override
  63. public void onClick(View v) {
  64. recordMusic();
  65. }
  66. });
  67.  
  68. btnStopRecord.setOnClickListener(new View.OnClickListener() {
  69. @Override
  70. public void onClick(View v) {
  71. isRecord = false;
  72. }
  73. });
  74. }
  75.  
  76. public void downloadAudio(String mediaUrl) throws IOException {
  77.  
  78. URLConnection cn = new URL(mediaUrl).openConnection();
  79. cn.connect();
  80. InputStream stream = cn.getInputStream();
  81. if (stream == null) {
  82. Log.e(getClass().getName(), "Unable to create InputStream for mediaUrl:" + mediaUrl);
  83. }
  84.  
  85. File direct = new File(Environment.getExternalStorageDirectory() + File.separator + "MyRadio");
  86.  
  87. if (!direct.exists()) {
  88. File wallpaperDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "MyRadio");
  89. wallpaperDirectory.mkdirs();
  90. }
  91.  
  92. String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
  93.  
  94. currentFile = new File(direct, timeStamp + ".mp3");
  95.  
  96. FileOutputStream out = new FileOutputStream(currentFile);
  97. byte buf[] = new byte[16384];
  98. int totalBytesRead = 0, incrementalBytesRead = 0;
  99.  
  100. isRecord = true;
  101.  
  102. while (isRecord) {
  103. int numread = stream.read(buf);
  104. if (numread <= 0)
  105. break;
  106. out.write(buf, 0, numread);
  107. totalBytesRead += numread;
  108. incrementalBytesRead += numread;
  109. totalKbRead = totalBytesRead/1000;
  110. }
  111.  
  112. stream.close();
  113. }
  114.  
  115. private void recordMusic() {
  116. if ((ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
  117. &&(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {
  118.  
  119. Runnable runnable = new Runnable() {
  120. @Override
  121. public void run() {
  122. try {
  123. downloadAudio(radioUrl);
  124. } catch (IOException ex) {
  125. ex.printStackTrace();
  126. }
  127. }
  128. };
  129. new Thread(runnable).start();
  130.  
  131. } else {
  132. ActivityCompat.requestPermissions(this, new String[] {
  133. Manifest.permission.WRITE_EXTERNAL_STORAGE,
  134. Manifest.permission.READ_EXTERNAL_STORAGE
  135. },REQUEST_CODE_PERMISSION_WRITE_EXTERNAL_STORAGE);
  136. }
  137. }
  138.  
  139. @Override
  140. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  141. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  142.  
  143. switch (requestCode) {
  144. case REQUEST_CODE_PERMISSION_WRITE_EXTERNAL_STORAGE:
  145. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  146. recordMusic();
  147. } else {
  148. Toast.makeText(this, "Нет доступа", Toast.LENGTH_SHORT).show();
  149. }
  150. break;
  151. }
  152. }
  153.  
  154. @Override
  155. protected void onStart() {
  156. super.onStart();
  157. }
  158.  
  159. public void startPlayerService() {
  160. Intent serviceIntent = new Intent(PlayerActivity.this, PlayerService.class);
  161. serviceIntent.putExtra(PlayerService.KEY_STREAM, radioUrl);
  162. serviceIntent.putExtra(PlayerService.KEY_RADIO, radioTitle);
  163. serviceIntent.setAction(PlayerConstants.ACTION.STARTFOREGROUND_ACTION);
  164. startService(serviceIntent);
  165. isPlay = true;
  166. btnPLayPause.setImageResource(R.drawable.icon_stop);
  167. }
  168.  
  169. private void stopPlayerService() {
  170. Intent serviceIntent = new Intent(PlayerActivity.this, PlayerService.class);
  171. serviceIntent.setAction(PlayerConstants.ACTION.STOPFOREGROUND_ACTION);
  172. stopService(serviceIntent);
  173. isPlay = false;
  174. btnPLayPause.setImageResource(R.drawable.icon_play);
  175. }
  176.  
  177. private BroadcastReceiver NetworkChangeReceiver = new BroadcastReceiver() {
  178. @Override
  179. public void onReceive(Context context, Intent intent) {
  180. internetStatus = NetworkUtil.getConnectivityStatusString(context);
  181. invalidateOptionsMenu();
  182. }
  183. };
  184.  
  185.  
  186. @Override
  187. protected void onResume() {
  188. super.onResume();
  189.  
  190. serviceReceiver = new BroadcastReceiver() {
  191. @Override
  192. public void onReceive(Context context, Intent intent) {
  193. int serviceStatus = intent.getIntExtra(SERVICE_PARAM, 0);
  194. if (serviceStatus == SERVICE_STATUS) {
  195. btnPLayPause.setImageResource(R.drawable.icon_play);
  196. }
  197. }
  198. };
  199.  
  200. IntentFilter filter = new IntentFilter(BROADCAST_ACTION);
  201. registerReceiver(serviceReceiver, filter);
  202.  
  203. registerReceiver(NetworkChangeReceiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
  204. registerReceiver(NetworkChangeReceiver, new IntentFilter("android.net.wifi.WIFI_STATE_CHANGED"));
  205. }
  206.  
  207.  
  208. @Override
  209. protected void onDestroy() {
  210. super.onDestroy();
  211. if (NetworkChangeReceiver != null) unregisterReceiver(NetworkChangeReceiver);
  212. unregisterReceiver(br);
  213.  
  214. unregisterReceiver(serviceReceiver);
  215. }
  216.  
  217. public void onPlayPause(View view) {
  218. if (NetworkUtil.getConnectivityStatus(this) != 0 ) {
  219. if (isPlay) {
  220. stopPlayerService();
  221. } else {
  222. startPlayerService();
  223. }
  224. } else {
  225. Toast.makeText(this, "Нет подключения к интернету", Toast.LENGTH_LONG).show();
  226. stopPlayerService();
  227. }
  228. }
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement