Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class PlayerActivity extends AppCompatActivity {
- private String radioUrl;
- private String radioTitle;
- private int radioID;
- File currentFile;
- private int totalKbRead = 0;
- public static final int REQUEST_CODE_PERMISSION_WRITE_EXTERNAL_STORAGE = 1;
- private String MAYBE_ACTION = "MAYBE_ACTION";
- public static boolean isPlay = false;
- ImageButton btnPLayPause;
- private TextView txtRadio;
- private Button btnStopRecord;
- private Button btnRecord;
- private boolean isRecord = false;
- private String internetStatus = "";
- BroadcastReceiver br;
- BroadcastReceiver serviceReceiver;
- public final static String SERVICE_PARAM = "param";
- public final static int SERVICE_STATUS = 0;
- public final static String BROADCAST_ACTION = "com.example.myradio";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_player);
- radioID = getIntent().getExtras().getInt("id");
- radioUrl = getIntent().getExtras().getString("url");
- radioTitle = getIntent().getExtras().getString("title");
- btnPLayPause = (ImageButton) findViewById(R.id.btnPLayPause);
- txtRadio = (TextView) findViewById(R.id.txtRadio);
- btnStopRecord = findViewById(R.id.btnStopRecord);
- btnRecord = findViewById(R.id.btnRecord);
- setTitle(radioTitle);
- txtRadio.setText(radioTitle);
- if (NetworkUtil.getConnectivityStatus(this) != 0) {
- startPlayerService();
- }
- br = new BroadcastReceiver() {
- @Override
- // действия при получении сообщений
- public void onReceive(Context context, Intent intent) {
- finish();
- }
- };
- IntentFilter intentFilter = new IntentFilter(MAYBE_ACTION);
- registerReceiver(br, intentFilter);
- btnRecord.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- recordMusic();
- }
- });
- btnStopRecord.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- isRecord = false;
- }
- });
- }
- public void downloadAudio(String mediaUrl) throws IOException {
- URLConnection cn = new URL(mediaUrl).openConnection();
- cn.connect();
- InputStream stream = cn.getInputStream();
- if (stream == null) {
- Log.e(getClass().getName(), "Unable to create InputStream for mediaUrl:" + mediaUrl);
- }
- File direct = new File(Environment.getExternalStorageDirectory() + File.separator + "MyRadio");
- if (!direct.exists()) {
- File wallpaperDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "MyRadio");
- wallpaperDirectory.mkdirs();
- }
- String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
- currentFile = new File(direct, timeStamp + ".mp3");
- FileOutputStream out = new FileOutputStream(currentFile);
- byte buf[] = new byte[16384];
- int totalBytesRead = 0, incrementalBytesRead = 0;
- isRecord = true;
- while (isRecord) {
- int numread = stream.read(buf);
- if (numread <= 0)
- break;
- out.write(buf, 0, numread);
- totalBytesRead += numread;
- incrementalBytesRead += numread;
- totalKbRead = totalBytesRead/1000;
- }
- stream.close();
- }
- private void recordMusic() {
- if ((ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
- &&(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- try {
- downloadAudio(radioUrl);
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
- };
- new Thread(runnable).start();
- } else {
- ActivityCompat.requestPermissions(this, new String[] {
- Manifest.permission.WRITE_EXTERNAL_STORAGE,
- Manifest.permission.READ_EXTERNAL_STORAGE
- },REQUEST_CODE_PERMISSION_WRITE_EXTERNAL_STORAGE);
- }
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- switch (requestCode) {
- case REQUEST_CODE_PERMISSION_WRITE_EXTERNAL_STORAGE:
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- recordMusic();
- } else {
- Toast.makeText(this, "Нет доступа", Toast.LENGTH_SHORT).show();
- }
- break;
- }
- }
- @Override
- protected void onStart() {
- super.onStart();
- }
- public void startPlayerService() {
- Intent serviceIntent = new Intent(PlayerActivity.this, PlayerService.class);
- serviceIntent.putExtra(PlayerService.KEY_STREAM, radioUrl);
- serviceIntent.putExtra(PlayerService.KEY_RADIO, radioTitle);
- serviceIntent.setAction(PlayerConstants.ACTION.STARTFOREGROUND_ACTION);
- startService(serviceIntent);
- isPlay = true;
- btnPLayPause.setImageResource(R.drawable.icon_stop);
- }
- private void stopPlayerService() {
- Intent serviceIntent = new Intent(PlayerActivity.this, PlayerService.class);
- serviceIntent.setAction(PlayerConstants.ACTION.STOPFOREGROUND_ACTION);
- stopService(serviceIntent);
- isPlay = false;
- btnPLayPause.setImageResource(R.drawable.icon_play);
- }
- private BroadcastReceiver NetworkChangeReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- internetStatus = NetworkUtil.getConnectivityStatusString(context);
- invalidateOptionsMenu();
- }
- };
- @Override
- protected void onResume() {
- super.onResume();
- serviceReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- int serviceStatus = intent.getIntExtra(SERVICE_PARAM, 0);
- if (serviceStatus == SERVICE_STATUS) {
- btnPLayPause.setImageResource(R.drawable.icon_play);
- }
- }
- };
- IntentFilter filter = new IntentFilter(BROADCAST_ACTION);
- registerReceiver(serviceReceiver, filter);
- registerReceiver(NetworkChangeReceiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
- registerReceiver(NetworkChangeReceiver, new IntentFilter("android.net.wifi.WIFI_STATE_CHANGED"));
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- if (NetworkChangeReceiver != null) unregisterReceiver(NetworkChangeReceiver);
- unregisterReceiver(br);
- unregisterReceiver(serviceReceiver);
- }
- public void onPlayPause(View view) {
- if (NetworkUtil.getConnectivityStatus(this) != 0 ) {
- if (isPlay) {
- stopPlayerService();
- } else {
- startPlayerService();
- }
- } else {
- Toast.makeText(this, "Нет подключения к интернету", Toast.LENGTH_LONG).show();
- stopPlayerService();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement