public void play(String path) { if (state.get() == PlayerStates.STOPPED || state.get() == PlayerStates.NOT_SET) { decodeop = (DecodeOperation) new DecodeOperation(events); decodeop.execute(path); // state.set(PlayerStates.PLAYING); decodeop.stop = false; } if (state.get() == PlayerStates.READY_TO_PLAY) { state.set(PlayerStates.PLAYING); decodeop.syncNotify(); } }
@Override public void pauseM() { if (state.isPlaying()) { decodeop.pause(); // state.set(PlayerStates.READY_TO_PLAY); } }
@Override public void playM() { if (!state.isPlaying()) { try { playSong(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } TextView songName = (TextView) findViewById(R.id.textView1); songName.setText(PlayListActivity.songsList.get(currentSongIndex).get("songTitle")); }
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener, communicate { static Activity globalContext; boolean reverbEnabler = false; // static boolean isPaused; public static Equalizer mEqualizer; static MediaPlayer mPlayer; protected String BAddress1 = "00:06:66:02:9C:EA"; protected String BAddress2 = "00:06:66:52:71:B6"; private OutputStream outStream = null; private static final UUID MY_UUID1 = UUID.fromString("a60f35f0-b93a-11de-8a39-08002009c666"); private static final UUID MY_UUID2 = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); private BluetoothSocket btSocket1 = null; private BluetoothSocket btSocket2 = null; private AudioManager amanager = null; int connInd = 0; private BluetoothAdapter BA; Fragment frag; static FragmentTab1 simpleListFragment; FragmentTab2 androidlidt; FragmentTab3 androidversionlist; FragmentTab4 azimuthControl; static FragmentTab5 audioFxFrag; private android.support.v7.app.ActionBar actionBar; private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item"; static int currentSongIndex = 0; public String path; PlayListActivity pl; long totalSongms = 0; protected MediaExtractor extractor; protected MediaCodec codec; final long TIMEOUT_US = 5000; boolean sawInputEOS; boolean sawOutputEOS; private CountDownTimer countDownTimer; protected int inputBufIndex; protected Boolean doStop = false; public static AudioTrack audioTrack; public static PresetReverb mReverb; public static EnvironmentalReverb eReverb; String toastText; int threadCount = 0; public byte[] chunkPlay; BlueToothSendData mConnectThread; DecodeOperation decodeop; Globals g = Globals.getInstance(); ConnectedThread mConnectedThread; int count = 0; PlayerStates state = PlayerStates.getInstance(); // PlayerEvents events; PlayerEvents events = new PlayerEvents() { @Override public void onStart(long duration) { // TODO Auto-generated method stub // simpleListFragment.sk1.setProgress(0); // String sduration = String.valueOf(duration); // simpleListFragment.songDuration.setText(sduration); } @Override public void onPlayUpdate(int percent, long currentms, long totalms) { // TODO Auto-generated method stub simpleListFragment.sk1.setProgress(percent); totalSongms = totalms; int sec = (int) ((totalms / 1000) - (currentms / 1000)); int min = (int) sec / 60; int remsec = sec - (min * 60); if (remsec < 0) remsec = 0; String time = String.valueOf(min) + ":" + String.format("%02d", remsec); simpleListFragment.songDuration.setText(time); } @Override public void onStop(String result) { simpleListFragment.songDuration.setText("0:00"); simpleListFragment.sk1.setProgress(0); simpleListFragment.playPauseButton.setBackgroundResource(R.drawable.ic_action_play); // TODO Auto-generated method stub if (result == "finished") { if (g.getPlayerStateRepeat() == 1) { nextM(); } else if (g.getPlayerStateRepeat() == 2) { playM(); } else { return; } } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // isPaused = false; reverbEnabler = false; // true; g.setPlayerStateRepeat(0); BA = BluetoothAdapter.getDefaultAdapter(); if (BA.isEnabled()) { String address = BA.getAddress(); String name = BA.getName(); toastText = name + " : " + address; } else { toastText = "Bluetooth is not enabled"; } Toast.makeText(this, toastText, Toast.LENGTH_LONG).show(); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setLogo(R.drawable.logo); getSupportActionBar().setDisplayUseLogoEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); simpleListFragment = new FragmentTab1(); androidlidt = new FragmentTab2(); androidversionlist = new FragmentTab3(); azimuthControl = new FragmentTab4(); audioFxFrag = new FragmentTab5(); actionBar = getSupportActionBar(); actionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#505050"))); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.addTab(actionBar.newTab().setText("One").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("Two").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("Three").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("Four").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("Five").setTabListener(this)); SongsManager plm = new SongsManager(); PlayListActivity.songsList = plm.getPlayList(); mReverb = new PresetReverb(1, 0); mReverb.setPreset(PresetReverb.PRESET_SMALLROOM); mReverb.setEnabled(reverbEnabler); mEqualizer = new Equalizer(0, 0); mEqualizer.setEnabled(true); } public void on(View view) { if (!BA.isEnabled()) { BA.enable(); // String enableBT = BluetoothAdapter.ACTION_REQUEST_ENABLE; // Intent turnOnIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); // startActivityForResult(new Intent(enableBT), 0); Toast.makeText( globalContext.getApplicationContext(), "Bluetooth turned on", Toast.LENGTH_LONG) .show(); } } @Override public void connectBlueData() { mConnectThread = new BlueToothSendData(BA, BAddress1); mConnectThread.start(); BluetoothSocket mmSocket = null; mmSocket = BlueToothSendData.getMmSocket(); if (mmSocket != null) { mConnectedThread = new ConnectedThread(mmSocket); } } @Override public void connectBlueAudio() { // TODO Auto-generated method stub // BluetoothDevice device = BA.getRemoteDevice(BAddress2); // // try { // btSocket1 = device.createRfcommSocketToServiceRecord(MY_UUID2); // // // } catch (IOException e) { // Toast.makeText(globalContext.getApplicationContext(),"failed to create socket // ",Toast.LENGTH_LONG).show(); // } // // BA.cancelDiscovery(); // // try { // btSocket1.connect(); // // // } catch (IOException e) { // try { // btSocket1.close(); // } catch (IOException e2) { // Toast.makeText(globalContext.getApplicationContext(),"unable to close socket // ",Toast.LENGTH_LONG).show(); // } // } // // if(btSocket1.isConnected()){ // connInd = 1; // }else{connInd = 0;} } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) { getActionBar() .setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM)); } } @Override public void onSaveInstanceState(Bundle outState) { // outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar().getSelectedNavigationIndex()); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {} @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { // if(getSupportFragmentManager().findFragmentByTag("Equalizer")!=null){ // getSupportFragmentManager().beginTransaction().remove(equalizerFragment).commit(); // } if (tab.getPosition() == 0) { getSupportFragmentManager() .beginTransaction() .replace(R.id.container, simpleListFragment) .commit(); } else if (tab.getPosition() == 1) { getSupportFragmentManager().beginTransaction().replace(R.id.container, androidlidt).commit(); } else if (tab.getPosition() == 2) { getSupportFragmentManager() .beginTransaction() .replace(R.id.container, androidversionlist) .commit(); } else if (tab.getPosition() == 3) { getSupportFragmentManager() .beginTransaction() .replace(R.id.container, azimuthControl) .commit(); } else { getSupportFragmentManager().beginTransaction().replace(R.id.container, audioFxFrag).commit(); } } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {} @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.activity_main_actions, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { Drawable newIcon = null; newIcon = (Drawable) item.getIcon(); // Take appropriate action for each action item click switch (item.getItemId()) { case R.id.action_search: // search action return true; case R.id.action_refresh: return true; case R.id.action_help: // help action return true; case R.id.action_settings: // help action return true; case R.id.action_bluetooth: if (!BA.isEnabled()) { on(frag.getView()); newIcon.mutate().setColorFilter(Color.rgb(0, 100, 200), PorterDuff.Mode.SRC_IN); } else { off(frag.getView()); newIcon.mutate().setColorFilter(Color.rgb(255, 255, 255), PorterDuff.Mode.SRC_IN); } item.setIcon(newIcon); return true; default: if (!BA.isEnabled()) { newIcon.mutate().setColorFilter(Color.rgb(255, 255, 255), PorterDuff.Mode.SRC_IN); } else { newIcon.mutate().setColorFilter(Color.rgb(0, 100, 200), PorterDuff.Mode.SRC_IN); } return super.onOptionsItemSelected(item); } } public Fragment getVisibleFragment() { FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager(); List<Fragment> fragments = fragmentManager.getFragments(); for (Fragment fragment : fragments) { if (fragment != null && fragment.getUserVisibleHint()) return (Fragment) fragment; } return null; } public void off(View view) { BA.disable(); Toast.makeText(globalContext.getApplicationContext(), "Bluetooth turned off", Toast.LENGTH_LONG) .show(); } @Override public void onStart() { super.onStart(); } @Override public void onResume() { super.onResume(); frag = getVisibleFragment(); globalContext = frag.getActivity(); } @Override public void onPause() { super.onPause(); } @Override public void onStop() { super.onStop(); } @Override protected void onDestroy() { super.onDestroy(); BA.disable(); if (mConnectedThread != null) { mConnectedThread.cancel(); } if (audioTrack != null) { audioTrack.release(); } } public void play(String path) { if (state.get() == PlayerStates.STOPPED || state.get() == PlayerStates.NOT_SET) { decodeop = (DecodeOperation) new DecodeOperation(events); decodeop.execute(path); // state.set(PlayerStates.PLAYING); decodeop.stop = false; } if (state.get() == PlayerStates.READY_TO_PLAY) { state.set(PlayerStates.PLAYING); decodeop.syncNotify(); } } public void playSong() throws IOException { path = PlayListActivity.songsList.get(MainActivity.currentSongIndex).get("songPath"); play(path); // play("http://programmerguru.com/android-tutorial/wp-content/uploads/2013/04/hosannatelugu.mp3"); } public void playThunder(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/thunder1.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { int x = (int) (((float) millisUntilFinished * 1000 / (float) g.getTimerCountdown()) * 360); String message = " custThunder" + String.valueOf(x); Log.d("sendingAuto", message + " " + String.valueOf(millisUntilFinished / 1000)); sendData(message); } public void onFinish() { // mConnectedThread.stopSend(); Log.d("sendingAuto", "Done"); } }.start(); } public void heliMilitary(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/helicopterMilitary.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { int x = (int) (millisUntilFinished); String message = " custHelione " + String.valueOf(x); sendData(message); } public void onFinish() { // mConnectedThread.stopSend(); } }.start(); } public void alienSound(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/aliens.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { int x = (int) (millisUntilFinished); String message = " " + String.valueOf(10); sendData(message); } public void onFinish() {} }.start(); } public void waterSound(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/water.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { int x = (int) (millisUntilFinished); String message = " " + String.valueOf(10); sendData(message); } public void onFinish() {} }.start(); } public void heliApproach(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/helicopterApproach.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { int x = (int) (millisUntilFinished); String message = " custom" + String.valueOf(x); sendData(message); } public void onFinish() {} }.start(); } public void gunShot(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/gunSound.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { int x = (int) (millisUntilFinished * 1000 / g.getTimerCountdown() * 180); String message = " " + String.valueOf(10); sendData(message); } public void onFinish() {} }.start(); } public void windSound(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/winds.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { int x = (int) (millisUntilFinished); String message = " " + String.valueOf(10); sendData(message); } public void onFinish() {} }.start(); } public void heliPass(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/helicopterPass.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { long timer = g.getTimerCountdown() / 1000; int x = 0; if (millisUntilFinished < g.getTimerCountdown() / 1000) { x = 90; } else { x = 270; } int r = (int) Math.abs((timer / 2 - millisUntilFinished) * 100 / timer / 2); String message = " custHelitwo" + String.valueOf(x) + "%" + String.valueOf(r); ; sendData(message); } public void onFinish() {} }.start(); } public void batSound(View v) { g.setFlagStopSong(true); stopM(); String aPath = "/sdcard/media/audio/raw/bats.wav"; play(aPath); long time = g.getTimerCountdown() / 1000; new CountDownTimer(time, 100) { @Override public void onTick(long millisUntilFinished) { int x = (int) (millisUntilFinished); String message = " " + String.valueOf(10); sendData(message); } public void onFinish() {} }.start(); } @Override public void playM() { if (!state.isPlaying()) { try { playSong(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } TextView songName = (TextView) findViewById(R.id.textView1); songName.setText(PlayListActivity.songsList.get(currentSongIndex).get("songTitle")); } @Override public void pauseM() { if (state.isPlaying()) { decodeop.pause(); // state.set(PlayerStates.READY_TO_PLAY); } } @Override public void stopM() { if (decodeop != null) decodeop.stop(); // mConnectedThread.stopSend(); } @Override public void previousM() { // state.set(PlayerStates.STOPPED); if (decodeop != null) decodeop.stop(); if (currentSongIndex > 0) { currentSongIndex = currentSongIndex - 1; } else { currentSongIndex = PlayListActivity.songsList.size() - 1; } playM(); } @Override public void nextM() { // TODO Auto-generated method stub // state.set(PlayerStates.STOPPED); if (decodeop != null) decodeop.stop(); if (currentSongIndex < (PlayListActivity.songsList.size() - 1)) { currentSongIndex = currentSongIndex + 1; } else { currentSongIndex = 0; } playM(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // state.set(PlayerStates.STOPPED); if (decodeop != null) decodeop.stop(); if (resultCode == 100) { currentSongIndex = data.getExtras().getInt("songIndex"); path = PlayListActivity.songsList.get(MainActivity.currentSongIndex).get("songPath"); playM(); } } @Override public void sendSliderData(int sliderv, String sliderno) { // TODO Auto-generated method stub String message = "dimmer" + sliderno + " " + String.valueOf(sliderv); sendData(message); } @Override public void circleSliderData(int a) { // TODO Auto-generated method stub String message = "rotator " + String.valueOf(a); // g.setBDataString(s); sendData(message); } @Override public void sliderM(int r, int t) { // TODO Auto-generated method stub String message = "position " + String.valueOf(t) + "%" + String.valueOf(r); sendData(message); } public void sendData(String s) { if (mConnectedThread != null) { if (count > 5) { mConnectedThread.write(s); count = 0; } count++; } // g.setBDataString(s); } @Override public void overAllVolume(float mdist) { // TODO Auto-generated method stub String message = "volume " + String.valueOf((int) (mdist * 255)); sendData(message); } @Override public void onBackPressed() { if (getSupportFragmentManager().findFragmentByTag("Equalizer") != null) { getSupportFragmentManager() .popBackStack("mainFragment", FragmentManager.POP_BACK_STACK_INCLUSIVE); } else { super.onBackPressed(); } } @Override public void seekPosition(int progress) { // TODO Auto-generated method stub if (decodeop != null) decodeop.seek(progress); } }