Sunday, 10 August 2014

Weekly Repeat Alarm


package com.setweeklyrepeatalarm;

import java.util.Calendar;

import android.app.Activity;

import android.app.AlarmManager;

import android.app.PendingIntent;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.CompoundButton.OnCheckedChangeListener;

import android.widget.TextView;

import android.widget.TimePicker;

import android.widget.TimePicker.OnTimeChangedListener;

import android.widget.Toast;

public class AlarmTestActivity extends Activity implements
OnCheckedChangeListener {

private Context ctx;

private PendingIntent operation, operation1, operation2, operation3,
operation4, operation5, operation6;

private CheckBox chk_monday, chk_tuesday, chk_wednesday, chk_thursday,
chk_friday, chk_sat, chk_sunday;

private AlarmManager alarmManager;

private Button btnSetAlarm, btnQuitAlarm;

private TextView alarmTitle;

private Intent i;

private TimePicker tpTime;

private boolean timerflag = false;

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ctx = this;

/**
* This intent invokes the activity DemoActivity, which in turn opens
* the AlertDialog window
*/

i = new Intent(AlarmTestActivity.this, AlarmPopup.class);

/** Getting a reference to the System Service ALARM_SERVICE */

alarmManager = (AlarmManager) getBaseContext().getSystemService(
ALARM_SERVICE);

setMapping();

setListener();

}

private void setListener() {

btnSetAlarm.setOnClickListener(setClickListener);

btnQuitAlarm.setOnClickListener(quitClickListener);

chk_monday.setOnCheckedChangeListener(this);

chk_tuesday.setOnCheckedChangeListener(this);

chk_wednesday.setOnCheckedChangeListener(this);

chk_thursday.setOnCheckedChangeListener(this);

chk_friday.setOnCheckedChangeListener(this);

chk_sat.setOnCheckedChangeListener(this);

chk_sunday.setOnCheckedChangeListener(this);

tpTime.setOnTimeChangedListener(new OnTimeChangedListener() {

public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {

// TODO Auto-generated method stub

timerflag = true;

}

});

}

OnClickListener quitClickListener = new OnClickListener() {

public void onClick(View v) {

finish();

}

};

private void setMapping() {

tpTime = (TimePicker) findViewById(R.id.tp_time);

alarmTitle = (TextView) findViewById(R.id.soundtv);

alarmTitle.setText("Sound : " + "AlarmTone Name");

btnSetAlarm = (Button) findViewById(R.id.btn_set_alarm);

btnQuitAlarm = (Button) findViewById(R.id.btn_quit_alarm);

chk_monday = (CheckBox) findViewById(R.id.chk_monday);

chk_tuesday = (CheckBox) findViewById(R.id.chk_tuesday);
chk_wednesday = (CheckBox) findViewById(R.id.chk_wednesday);

chk_thursday = (CheckBox) findViewById(R.id.chk_thursday);

chk_friday = (CheckBox) findViewById(R.id.chk_friday);

chk_sat = (CheckBox) findViewById(R.id.chk_sat);

chk_sunday = (CheckBox) findViewById(R.id.chk_sunday);

}

OnClickListener setClickListener = new OnClickListener() {

public void onClick(View v) {

if (!timerflag) {

Toast.makeText(ctx, "Please first select time",
Toast.LENGTH_LONG).show();

}

else {

Toast.makeText(ctx, "Alarm set successfully", Toast.LENGTH_LONG)
.show();

finish();

}

}

};

public void stopAlaram(Context ctx, Intent intent)

{

PendingIntent.getBroadcast(ctx, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT).cancel();

Toast.makeText(ctx, "Cancel!", Toast.LENGTH_LONG).show();

}

public void forday(int week, PendingIntent pendingIntent) {

Calendar calSet = Calendar.getInstance();

int hour = tpTime.getCurrentHour();

int minute = tpTime.getCurrentMinute();

calSet.set(Calendar.DAY_OF_WEEK, week);

calSet.set(Calendar.HOUR_OF_DAY, hour);

calSet.set(Calendar.MINUTE, minute);

calSet.set(Calendar.SECOND, 0);

calSet.set(Calendar.MILLISECOND, 0);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calSet.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7,
pendingIntent);

}

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

// TODO Auto-generated method stub

if (timerflag) {

if (buttonView == chk_monday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 2);

i.putExtras(bundle);

operation = PendingIntent.getActivity(getBaseContext(), 0,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(2, operation);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation);

}

}

else if (buttonView == chk_tuesday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 3);

i.putExtras(bundle);

operation1 = PendingIntent.getActivity(getBaseContext(), 1,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(3, operation1);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation1);

}

}

else if (buttonView == chk_wednesday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 4);

i.putExtras(bundle);

operation2 = PendingIntent.getActivity(getBaseContext(), 2,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(4, operation2);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation2);

}

}

else if (buttonView == chk_thursday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 5);

i.putExtras(bundle);

operation3 = PendingIntent.getActivity(getBaseContext(), 3,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(5, operation3);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation3);

}

}

else if (buttonView == chk_friday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 6);

i.putExtras(bundle);

operation4 = PendingIntent.getActivity(getBaseContext(), 4,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(6, operation4);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation4);

}

}

else if (buttonView == chk_sat) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 7);

i.putExtras(bundle);

operation5 = PendingIntent.getActivity(getBaseContext(), 5,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(7, operation5);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation5);

}

}

else if (buttonView == chk_sunday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 1);

i.putExtras(bundle);

operation6 = PendingIntent.getActivity(getBaseContext(), 6,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(1, operation6);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation6);

}

}

} else {

buttonView.setChecked(false);

Toast.makeText(ctx, "Please first select time", Toast.LENGTH_LONG)
.show();

}

}

}

------------------------------------------------------------------------------------------------------------


package com.setweeklyrepeatalarm;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class AlarmPopup extends Activity implements OnClickListener {

private TextView alarmHeading;
private Button closebtn, snooze, dismiss;
private Context ctx;
MediaPlayer mp;
private int selected_day;
private Bundle bundle;
private AssetFileDescriptor descriptor;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm_popup);
ctx = this;
try {
bundle = this.getIntent().getExtras();
selected_day = bundle.getInt("Selected_day");

} catch (Exception e) {
e.printStackTrace();
}

Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
if (selected_day < day && bundle != null) {
this.finish();
return;
} else {
try {
/*mp = new MediaPlayer();
mp.reset();

descriptor = getResources().openRawResourceFd(R.raw.msg);

mp.reset();
mp.setDataSource(descriptor.getFileDescriptor(),
descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
mp.prepare();
mp.start();
mp.release();
mp.setLooping(true);*/
mp = MediaPlayer.create(ctx, R.raw.msg);
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
}
alarmHeading = (TextView) findViewById(R.id.tv_name_lang);
closebtn = (Button) findViewById(R.id.btncloselang);
snooze = (Button) findViewById(R.id.btn_eng);
dismiss = (Button) findViewById(R.id.btn_hindi);

alarmHeading.setText("Alarm");
snooze.setText("Snooze");
dismiss.setText("Dismiss");

closebtn.setOnClickListener(this);
snooze.setOnClickListener(this);
dismiss.setOnClickListener(this);

}

@Override
public void onBackPressed() {
// TODO Auto-generated method stub

AlarmTestActivity obj = new AlarmTestActivity();
obj.stopAlaram(ctx, this.getIntent());
mp.stop();
mp.release();
finish();

// super.onBackPressed();
}

public void onClick(View v) {
// TODO Auto-generated method stub
if (v == dismiss || v == closebtn) {
AlarmTestActivity obj = new AlarmTestActivity();
obj.stopAlaram(ctx, this.getIntent());
mp.stop();
mp.release();
finish();
} else if (v == snooze) {
Intent intent = new Intent();
intent.setClass(this, AlarmPopup.class);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Bundle bundle = new Bundle();
bundle.putInt("Selected_day", selected_day);
intent.putExtras(bundle);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 101,
intent, Intent.FLAG_ACTIVITY_NEW_TASK);
am.set(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + 5 * 1000 * 60, pendingIntent);

// Intent i = new Intent(this, AlarmPopup.class);
// PendingIntent pendingIntent =
// PendingIntent.getActivity(getBaseContext(), 101, i,
// Intent.FLAG_ACTIVITY_NEW_TASK);
// AlarmManager alarmManager = (AlarmManager)
// getBaseContext().getSystemService(ALARM_SERVICE);
// alarmManager.set(AlarmManager.RTC_WAKEUP,1000, pendingIntent);
mp.stop();
mp.release();
finish();
}
}
}


------------------------------------------------------------------------------------------------------------


main_activity

- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#111111">
  <TextView android:id="@+id/soundtv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sound :" android:textColor="#000000" android:textSize="20sp" android:textStyle="bold" android:typeface="serif" /> 
  <View android:id="@+id/view1" android:layout_width="fill_parent" android:layout_height="1dp" android:layout_below="@+id/soundtv" android:background="#ffffff" /> 
  <TimePicker android:id="@+id/tp_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/view1" /> 
  <View android:id="@+id/view2" android:layout_width="fill_parent" android:layout_height="1dp" android:layout_below="@+id/tp_time" android:background="#ffffff" /> 
  <TextView android:id="@+id/alarmrepeattv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/view2" android:text="Alarm Repeat" android:textColor="#000000" android:textSize="20sp" android:textStyle="bold" android:typeface="serif" /> 
- <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/rlayout" android:background="@android:color/white" android:layout_below="@+id/alarmrepeattv">
- <LinearLayout android:id="@+id/weekdayll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical">
  <CheckBox android:id="@+id/chk_monday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Monday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_tuesday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tuesday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_wednesday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Wednesday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_thursday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Thursday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_friday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Friday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_sat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Saturday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_sunday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sunday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  </LinearLayout>
  </ScrollView>
- <RelativeLayout android:id="@+id/rlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center_horizontal">
  <View android:id="@+id/view3" android:layout_width="fill_parent" android:layout_height="1dp" android:background="#ffffff" /> 
  <Button android:id="@+id/btn_set_alarm" android:layout_width="100dip" android:layout_height="50dip" android:layout_below="@+id/view3" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:padding="5dp" android:text="Set Alarm" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <Button android:id="@+id/btn_quit_alarm" android:layout_width="100dp" android:layout_height="50dp" android:layout_alignParentRight="true" android:layout_below="@+id/view3" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:padding="5dp" android:text="Cancle" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  </RelativeLayout>
  </RelativeLayout>
------------------------------------------------------------------------------------------------------------

alarm popup.xml


  <?xml version="1.0" encoding="utf-8" ?> 
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#00000000">
- <RelativeLayout android:id="@+id/main_iv" android:layout_width="240dp" android:layout_height="45dp" android:background="@android:color/white">
- <RelativeLayout android:id="@+id/sub_main" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#0000FF">
  <TextView android:id="@+id/tv_name_lang" android:layout_width="fill_parent" android:layout_height="60dip" android:layout_toRightOf="@+id/image" android:gravity="center" android:text="Choose Language" android:textColor="#750303" android:textSize="20sp" android:textStyle="bold" /> 
  <Button android:id="@+id/btncloselang" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="@drawable/ic_launcher" android:gravity="top" android:tag="btncloselang" /> 
  </RelativeLayout>
  </RelativeLayout>
- <RelativeLayout android:layout_width="240dp" android:layout_height="wrap_content" android:layout_below="@+id/main_iv" android:background="@android:color/white">
  <Button android:id="@+id/btn_eng" android:layout_width="240dp" android:layout_height="50dp" android:background="#FF0000" android:gravity="center" android:text="English" android:textColor="#750303" android:textSize="18sp" android:textStyle="bold" /> 
  <Button android:id="@+id/btn_hindi" android:layout_width="240dp" android:layout_height="50dp" android:layout_below="@+id/btn_eng" android:background="#00FF00" android:text="" android:textColor="#750303" android:textSize="18sp" android:textStyle="bold" /> 
  </RelativeLayout>
  </RelativeLayout>

------------------------------------------------------------------------------------------------------------

manifest.xml 


<?xml version="1.0" encoding="utf-8" ?> 
- <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.setweeklyrepeatalarm" android:versionCode="1" android:versionName="1.0">
  <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> 
  <uses-permission android:name="android.permission.INTERNET" /> 
  <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
  <uses-permission android:name="android.permission.VIBRATE" /> 
  <uses-permission android:name="android.permission.WAKE_LOCK" /> 
  <uses-feature android:name="android.hardware.camera" /> 
  <uses-feature android:name="android.hardware.camera.autofocus" /> 
  <uses-permission android:name="android.permission.CAMERA" /> 
  <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
  <uses-permission android:name="android.permission.WAKE_LOCK" /> 
- <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
- <activity android:name="com.setweeklyrepeatalarm.AlarmTestActivity" android:label="@string/app_name">
- <intent-filter>
  <action android:name="android.intent.action.MAIN" /> 
  <category android:name="android.intent.category.LAUNCHER" /> 
  </intent-filter>
  </activity>
  <activity android:name="com.setweeklyrepeatalarm.AlarmPopup" android:screenOrientation="portrait" /> 
  </application>
  </manifest>



Directional Viewpager

package com.directionalviewpager.sample;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import com.directionalviewpager.DirectionalViewPager;

public class SampleActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //Set up the pager
        final DirectionalViewPager pager = (DirectionalViewPager)findViewById(R.id.pager);
        pager.setAdapter(new TestFragmentAdapter(getSupportFragmentManager()));

        //Bind to control buttons
        ((Button)findViewById(R.id.horizontal)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pager.setOrientation(DirectionalViewPager.HORIZONTAL);
            }
        });
        ((Button)findViewById(R.id.vertical)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pager.setOrientation(DirectionalViewPager.VERTICAL);
            }
        });
    }
}


------------------------------------------------------------------------------------------------------------

package com.directionalviewpager.sample;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

public final class TestFragment extends Fragment {
private static final String KEY_CONTENT = "TestFragment:Content";
public static TestFragment newInstance(String content) {
TestFragment fragment = new TestFragment();

StringBuilder builder = new StringBuilder();
for (int i = 0; i < 30; i++) {
builder.append(content).append(" ");
}
builder.deleteCharAt(builder.length() - 1);
fragment.mContent = builder.toString();
return fragment;
}
private String mContent = "???";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
mContent = savedInstanceState.getString(KEY_CONTENT);
}
TextView text = new TextView(getActivity());
text.setText(mContent);
text.setTextSize(20 * getResources().getDisplayMetrics().density);
text.setPadding(20, 20, 20, 20);
text.setGravity(Gravity.CENTER);
LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.setGravity(Gravity.CENTER);
layout.addView(text);
return layout;
}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_CONTENT, mContent);
}
}

------------------------------------------------------------------------------------------------------------


package com.directionalviewpager.sample;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

class TestFragmentAdapter extends FragmentPagerAdapter {
protected static final String[] CONTENT = new String[] { "This", "Is Is", "A A A", "Test", };

public TestFragmentAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
return TestFragment.newInstance(CONTENT[position]);
}

@Override
public int getCount() {
return CONTENT.length;
}
}

------------------------------------------------------------------------------------------------------------xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
  <com.directionalviewpager.DirectionalViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /> 
- <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="2dp" android:orientation="horizontal">
  <Button android:id="@+id/horizontal" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_marginRight="1dp" android:text="Horizontal" /> 
  <Button android:id="@+id/vertical" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_marginLeft="1dp" android:text="Vertical" /> 
  </LinearLayout>
  </LinearLayout

Recording and playing


package com.videorecordingandplay;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaRecorder;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener,OnPreparedListener {

boolean isStartRecording = false;
boolean isPlayRecording = false;

MediaPlayer mediaPlayer;
MediaRecorder recorder;
File audiofile = null;
Button takeAudio, playAudio;
String audiopath;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
takeAudio = (Button) findViewById(R.id.takeAudio);
playAudio = (Button) findViewById(R.id.playAudio);
takeAudio.setOnClickListener(this);
playAudio.setOnClickListener(this);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {

case R.id.takeAudio: {
try {
if (!isStartRecording) {
startRecording();
takeAudio.setBackgroundResource(R.drawable.nonrecording);
isStartRecording = !isStartRecording;
} else {
stopRecording();
takeAudio.setBackgroundResource(R.drawable.recording);
isStartRecording = !isStartRecording;
}

} catch (Exception e) {
System.out.println(e);
}

break;
}

case R.id.playAudio: {
try {

if (!isPlayRecording) {
playRecording();
playAudio.setBackgroundResource(R.drawable.pause);
isPlayRecording = !isPlayRecording;
}

else {
stopPlaying();
playAudio.setBackgroundResource(R.drawable.play_enable);
isPlayRecording = !isPlayRecording;

}

} catch (Exception e) {
System.out.println(e);
}
break;
}

}
}

public void startRecording() throws IOException {

File sampleDir = Environment.getExternalStorageDirectory();
try {
audiofile = File.createTempFile("sound", ".mp3", sampleDir);
audiopath = audiofile.getAbsolutePath();
System.out.println("path");
} catch (IOException e) {

return;
}
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(audiofile.getAbsolutePath());
recorder.prepare();
recorder.start();
}

public void stopRecording() {

// play.setEnabled(true);
recorder.stop();
playAudio.setBackgroundResource(R.drawable.play_enable);
playAudio.setEnabled(true);
recorder.release();
// addRecordingToMediaLibrary();
}

public void playRecording() throws IOException {

MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(audiopath);
mp.prepare();

mp.setOnCompletionListener(new OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer player) {
player.stop();
playAudio.setBackgroundResource(R.drawable.play_enable);

}

});
} catch (IllegalArgumentException e) {

e.printStackTrace();
} catch (IllegalStateException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
try {
mp.setOnPreparedListener(this);
mp.prepareAsync();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.start();
}

public void stopPlaying()

{

if (mediaPlayer != null)
mediaPlayer.stop();

}
}



package com.videorecordingandplay;

import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.util.Log;

public class RecordSystem {
private boolean isRecording;
private String fileLocation;

public RecordSystem(String fileLocation) {
this.fileLocation = fileLocation;
}

public void stopRecord() {
isRecording = false;
}

public void startRecord() {
isRecording = true;
int frequency = 11025;
int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_STEREO;
int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;

File file = new File(fileLocation);

// delete any previous recording
if (file.exists()) {
file.delete();
}

// create the new file on SD
try {
file.createNewFile();
} catch (IOException e) {
throw new IllegalStateException("Failed to create "
+ file.toString());
}

try {
// create a DataOuputStream to write the audio data into the saved
// file
OutputStream os = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(os);
DataOutputStream dos = new DataOutputStream(bos);

int bufferSize = AudioRecord.getMinBufferSize(frequency,
channelConfiguration, audioEncoding);

// create a new AudioRecord object to record the audio
// uses the permission 'android.permission.RECORD_AUDIO' in the
// manifest
AudioRecord audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC, frequency,
channelConfiguration, audioEncoding, bufferSize);

short[] buffer = new short[bufferSize];
audioRecord.startRecording();

while (isRecording) {
// grab the buffered input (mic) and write it to a file on the
// SD
int bufferReadResult = audioRecord.read(buffer, 0, bufferSize);
for (int i = 0; i < bufferReadResult; i++) {
dos.writeShort(buffer[i]);
}
}

audioRecord.stop();
dos.flush();
dos.close();

} catch (Throwable t) {
Log.e("AudioRecord", "Recording Failed");
}
}
}




package com.videorecordingandplay;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioRecord;
import android.media.AudioTrack;
import android.util.Log;

public class PlaySystem {
private boolean isPlaying;
private String fileLocation;

public PlaySystem(String fileLocation) {
this.fileLocation = fileLocation;
}

public void stopPlay() {
isPlaying = false;
}

public void startPlay(int playFrequency) {
isPlaying = true;
int frequency = 11025;
int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;

File file = new File(fileLocation);

try {
InputStream is = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
DataInputStream dis = new DataInputStream(bis);

int bufferSize = AudioRecord.getMinBufferSize(frequency,
channelConfiguration, audioEncoding);

// initialize an audiotrack with a different frequency then
// originally used for the recording
// this wil automatically manipulate the 'pitch' of the sound
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
playFrequency, channelConfiguration, audioEncoding,
bufferSize, AudioTrack.MODE_STREAM);

// start playback
audioTrack.play();

short[] buffer = new short[bufferSize];

while (isPlaying) {
for (int i = 0; i < bufferSize; i++) {
// write the 'short' buffer blocks to the audiotrack
try {
short s = dis.readShort();
buffer[i] = s;
} catch (EOFException eofe) {
isPlaying = false;
}
}
audioTrack.write(buffer, 0, bufferSize);
}

audioTrack.stop();
dis.close();

} catch (Throwable t) {
Log.e("AudioPlay", "Playing Failed");
}
}
}


package com.videorecordingandplay;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.SeekBar;

public class SecondActivity extends Activity {

private boolean isRecording = false;
private boolean isPlaying = false;
private MediaPlayer mp = null;

// main activity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.audionet);

mp = new MediaPlayer();

// uses the permission 'android.permission.WRITE_EXTERNAL_STORAGE' in
// the manifest
final String fileLocation = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/mysoundsample.wav";

// initialize the record and the play system
final RecordSystem rs = new RecordSystem(fileLocation);
final PlaySystem ps = new PlaySystem(fileLocation);

final ImageButton recordButton = (ImageButton) findViewById(R.id.record_start_stop);
final Button playButton = (Button) findViewById(R.id.play_start_stop);


// start and stop recording
recordButton.setOnClickListener(new OnClickListener() {

public void onClick(View view) {
if (isRecording) {
recordButton.setBackgroundResource(R.drawable.recording);
rs.stopRecord();
} else {
recordButton.setBackgroundResource(R.drawable.nonrecording);
// start the recording in a thread to prevent force closing
// - system block
Thread thread = new Thread(new Runnable() {

public void run() {
rs.startRecord();
}
});
thread.start();
}
isRecording = !isRecording;
}
});

// start stop the playback button
playButton.setOnClickListener(new OnClickListener() {

public void onClick(View view) {
if (isPlaying) {
playButton.setText("play start");
ps.stopPlay();
} else {
playButton.setText("play stop");
// start the playback in a thread to prevent force closing -
// system block
Thread thread = new Thread(new Runnable() {

public void run() {
ps.startPlay(11025);
}
});
thread.start();
}
isPlaying = !isPlaying;
}
});
}
}