i just created a audio recording application, when it creates new audio file i want it to be there in a particular folder (here sample)
this is how i am making the file
outputfile= Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording_"+System.currentTimeMillis()+".mp3";
and this is the folder i created for newly files
File directory=new File(Environment.getExternalStorageDirectory()+separator+"sample");
directory.mkdirs();
whenever the application creates new files it should automatically go to the sample folder
i am a beginner in android , those who can help me,please provide the code too, thanks
here is my main activity
package com.hackerinside.jaisonjoseph.sample_recorder;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import static java.io.File.separator;
public class MainActivity extends AppCompatActivity {
private Button play,stop,record;
private MediaRecorder myAudioRecorder;
private String outputfile;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play=(Button)findViewById(R.id.play);
stop=(Button)findViewById(R.id.stop);
record=(Button)findViewById(R.id.record);
stop.setEnabled(false);
play.setEnabled(false);
File directory=new File(Environment.getExternalStorageDirectory()+separator+"jaison");
// directory.mkdirs();
outputfile= Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording_"+System.currentTimeMillis()+".mp3";
record.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
try {
myAudioRecorder=new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.DEFAULT);
myAudioRecorder.setOutputFile(outputfile);
myAudioRecorder.prepare();
myAudioRecorder.start();
}
catch (IllegalStateException ise){
}catch (IOException ioe){
}
record.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(getApplicationContext(),"record startded",Toast.LENGTH_LONG).show();
}
});
stop.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
myAudioRecorder.stop();
record.setEnabled(true);
myAudioRecorder.release();
myAudioRecorder=null;
stop.setEnabled(false);
play.setEnabled(true);
Toast.makeText(getApplicationContext(),"recorded audio",Toast.LENGTH_LONG).show();
}
});
play.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
MediaPlayer mediaPlayer=new MediaPlayer();
try {
mediaPlayer.setDataSource(outputfile);
mediaPlayer.prepare();
mediaPlayer.start();
Toast.makeText(getApplicationContext(),"playing audio",Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
}
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
File directory=new File(Environment.getExternalStorageDirectory(),"sample");
if(!directory.exists())
{
if(!directory.mkdirs())
{
Toast ( could not create directory: + directory.getAbsolutePath());
return;
}
}
File file = new File(directory, "recording_"+System.currentTimeMillis()+".mp3");
This code does not create a file. Only a File object. But you can use the File object file to create a file.
Since sample is the default directory,
String fileName = "/recording_" + System.currentTimeMillis() + ".mp3";
final private String directory = Environment.getExternalStorageDirectory()+ "/sample";
Create the directory if doesn't exist.
if(!new File(directory).exists()){
if(!file.mkdir()){/*error*/ }
}
Now, the new file path
String outputfile = directory + "/" + fileName;
I got the answer Thanks everyone ,for helping
File directorysample=new File(Environment.getExternalStorageDirectory()+separator+"sample");
directorysample.mkdirs();
String filename = "/recording_" + System.currentTimeMillis() + ".mp3";
final String directory = Environment.getExternalStorageDirectory()+ "/sample";
outputfile = directory + "/" + filename;
Related
I just have only basic knowledge about android. today i developed one audio recording application, but the problem is user can record audio and it can play the audio, when it runs the second time(or user press the record button again) the newly recorded file replaces withe the old file from the storage, i want create new file for each and every recording operations , how to do that ?
this is my main activity
package com.hackerinside.jaisonjoseph.sample_recorder;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.Toast;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private Button play,stop,record;
private MediaRecorder myAudioRecorder;
private String outputfile;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play=(Button)findViewById(R.id.play);
stop=(Button)findViewById(R.id.stop);
record=(Button)findViewById(R.id.record);
stop.setEnabled(false);
play.setEnabled(false);
outputfile= Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording.mp3";
myAudioRecorder=new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputfile);
record.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
try {
myAudioRecorder.prepare();
myAudioRecorder.start();
}
catch (IllegalStateException ise){
}catch (IOException ioe){
}
record.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(getApplicationContext(),"record startded",Toast.LENGTH_LONG).show();
}
});
stop.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
myAudioRecorder.stop();
record.setEnabled(true);
myAudioRecorder.release();
myAudioRecorder=null;
stop.setEnabled(false);
play.setEnabled(true);
Toast.makeText(getApplicationContext(),"recorded audio",Toast.LENGTH_LONG).show();
}
});
play.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
MediaPlayer mediaPlayer=new MediaPlayer();
try {
mediaPlayer.setDataSource(outputfile);
mediaPlayer.prepare();
mediaPlayer.start();
Toast.makeText(getApplicationContext(),"playing audio",Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
// here
}
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
On your record button click use this line
outputfile= Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording_"+System.currentTimeMillis()+".mp3";
If you give same file name, the file will be override the old one.
Use Calendar.getInstance().getTimeInMillis() to create unique files name for each recording.
outputfile=Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording_"+ Calendar.getInstance().getTimeInMillis()+".mp3";
Also create one function to create new audio file and initialise recorder with new file reference.
private void prepareNewRecording() {
outputfile=Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording_"+ Calendar.getInstance().getTimeInMillis()+".mp3";
myAudioRecorder=newMediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputfile);
}
Now call above function from start recording
prepareNewRecording();
myAudioRecorder.prepare();
myAudioRecorder.start();
This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 5 years ago.
I just have only basic knowledge about android. today i developed one audio recording application, but the problem is user can record audio , stop the recording and it can play the audio,but after playing when the user press the record button again the app is crashing , anyone can help me?
this is my main activity
package com.hackerinside.jaisonjoseph.sample_recorder;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.Toast;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private Button play,stop,record;
private MediaRecorder myAudioRecorder;
private String outputfile;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play=(Button)findViewById(R.id.play);
stop=(Button)findViewById(R.id.stop);
record=(Button)findViewById(R.id.record);
stop.setEnabled(false);
play.setEnabled(false);
outputfile= Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording_"+System.currentTimeMillis()+".mp3";
myAudioRecorder=new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.DEFAULT);
myAudioRecorder.setOutputFile(outputfile);
record.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
try {
myAudioRecorder.prepare();
myAudioRecorder.start();
}
catch (IllegalStateException ise){
}catch (IOException ioe){
}
record.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(getApplicationContext(),"record startded",Toast.LENGTH_LONG).show();
}
});
stop.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
myAudioRecorder.stop();
record.setEnabled(true);
myAudioRecorder.release();
myAudioRecorder=null;
stop.setEnabled(false);
play.setEnabled(true);
Toast.makeText(getApplicationContext(),"recorded audio",Toast.LENGTH_LONG).show();
}
});
play.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
MediaPlayer mediaPlayer=new MediaPlayer();
try {
mediaPlayer.setDataSource(outputfile);
mediaPlayer.prepare();
mediaPlayer.start();
Toast.makeText(getApplicationContext(),"playing audio",Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
// here
}
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Try adding this
myAudioRecorder=new MediaRecorder();
in your
record.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
try {
myAudioRecorder=new MediaRecorder();
myAudioRecorder.prepare();
myAudioRecorder.start();
}
Alternatively u can remove myAudioRecorder.release(); from stop button click.
it should be released during onPause() on your activity
That is because, you are setting it null while stopping mediaRecorder
stop.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
myAudioRecorder.stop();
record.setEnabled(true);
myAudioRecorder.release();
myAudioRecorder=null;
stop.setEnabled(false);
play.setEnabled(true);
Toast.makeText(getApplicationContext(),"recorded audio",Toast.LENGTH_LONG).show();
}
});
When you click again on record this will got executed,
record.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
try {
// myAudioRecorder is null when you come up second time.
// Initialize myAudioRecorder to prevent an exception.
myAudioRecorder.prepare();
myAudioRecorder.start();
} catch (IllegalStateException ise){
} catch (IOException ioe) {
}
record.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(getApplicationContext(),"record startded",Toast.LENGTH_LONG).show();
}
});
myAudioRecorder.prepare(); will through NullPointerException as myAudioRecorder is null. Although above code is in try.. catch but you did not catch NullPointerException, App will crash.
if you look at documentations it says you don't have access to recorder after you releasd it which is what you are doing when you press stop,you have to instantiate new recorder or simply don't release it.
I'm developing an android app which has a record feature. I'm able to record and save the audio file into my device's storage, however there seems a problem. When I record twice, the recorded audio replaces the first recorded one.
I want my app to do like this:
I recorded and it has successfully recorded and saved the audio
file into the storage;
I recorded again and has successfully recorded and saved the audio
file into the storage;
There would be two recorded and saved audio files in the storage.
Here is the code I'm using:
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.IOException;
public class RecordModule extends Activity {
Button SpeakBtn, StopBtn;
private MediaRecorder myAudioRecorder;
private String outputFile = null;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recordmodule);
SpeakBtn = (Button) findViewById(R.id.SpeakBtn);
StopBtn = (Button) findViewById(R.id.StopBtn);
StopBtn.setEnabled(false);
SpeakBtn.setEnabled(true);
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp";
myAudioRecorder = new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputFile);
SpeakBtn.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
try {
myAudioRecorder.prepare();
myAudioRecorder.start();
}
catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SpeakBtn.setEnabled(false);
StopBtn.setEnabled(true);
Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show();
}
});
StopBtn.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
myAudioRecorder.stop();
myAudioRecorder.release();
myAudioRecorder = null;
StopBtn.setEnabled(false);
SpeakBtn.setEnabled(true);
Toast.makeText(getApplicationContext(), "Audio recorded successfully", Toast.LENGTH_LONG).show();
}
});
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_record_module, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
The first recording is being overwritten, so the others need to have another file name.
I would suggest you to use output file name as the time when the record was created:
Date createdTime = new Date();
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + createdTime + "_rec.3gp";
I am trying to play an audio file from the internal storage.
The code I used is..
package com.abhi.firstapp.firstapp;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import java.net.URI;
public class MainActivity extends AppCompatActivity {
MediaPlayer mp;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
File f= new File("/sdcard/a.mp3");
if(f.exists())
{
Toast toast= Toast.makeText(this, "file exists", Toast.LENGTH_LONG);
toast.show();
Log.d("uri","1");
Uri uri= Uri.fromFile(f);
Log.d("uri", "2");
mp= new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
Log.d("uri", "3");
try {
mp.setDataSource("/sdcard/a.mp3");
} catch (IOException e) {
e.printStackTrace();
}
//mp.setDataSource(getBaseContext(), uri);
Log.d("uri", "4");
try {
mp.prepare();
} catch (IOException e) {
e.printStackTrace();
Log.d("uri", "IOException");
}
mp.start();
}
else {
Toast toast1 = Toast.makeText(this, "file does not exist", Toast.LENGTH_LONG);
toast1.show();
}
//MediaPlayer mp= MediaPlayer.create(getBaseContext(), uri);
//mp.start();
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
By using the log, I can determine that this code is running till the mp.prepare(mediaplayer prepare). And on this step, it gives the error Illegal State Exception
Caused by: java.lang.IllegalStateException
at android.media.MediaPlayer.prepare(Native Method)
Please Help!
There are a couple of things you might want to change.
First: mp.prepare() will block your main thread, which is forbidden and will result in an exception where Android will close your app. To prevent this, mp.prepareAsync was designed. Use that method instead and implement both an onPreparedListener and an onErrorListener.
Second: you should provide a datasource before you call prepare().
You could do this for example this way:
public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
MediaPlayer mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(streamURL);
} catch (IOException e) {
// Error, do something
}
mp.prepareAsync();
...
}
#Override
public void onPrepared(MediaPlayer player) {
mediaPlayer.start();
}
...
}
I had the same problem. It can be raised because MediaPlayer is already prepared. When you create a new MediaPlayer by MediaPlayer mp = MediaPlayer.create(getContext(),someUri); mp prepares automatically so you should not prepare it by yourself.
I am trying to a make an app that has just one button . When you press it plays a sound and when you LONG press it , It gives you the option to share . The app is working without any errors .. but the share option just wont open . And the button does nothing when you long press it .
package com.example.buttonclicksound;
import com.example.buttonclicksound.MainActivity;
import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
protected static final String TAG = "MainActivity";
Button button1;
MediaPlayer mPlayer;
AnimationDrawable lightsAnimation;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//No title bar is set for the activity
requestWindowFeature(Window.FEATURE_NO_TITLE);
//Full screen is set for the Window
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
ImageView lights = (ImageView) findViewById(R.id.imageView1);
lightsAnimation = (AnimationDrawable) lights.getDrawable();
button1 = (Button) findViewById(R.id.button1);
mPlayer = MediaPlayer.create(MainActivity.this, R.raw.splash);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
mPlayer.start();
mPlayer.setLooping(false);
} catch (Exception e) {
Log.e("ButtonListenerActivity", "error: " + e.getMessage(),
e);
}
}
});
button1.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
shareIt();
return true;
}
private void shareIt() {
//sharing implementation here
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("audio/mPlayer");
}
});
}
#Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
lightsAnimation.start();
}
protected void onDestroy() {
super.onDestroy();
// TODO Auto-generated method stub
if (mPlayer != null) {
mPlayer.release();
mPlayer = null;
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Its extremly frustrating .. been working so hard at this .. and the Daam thing just wont work .
after some further work .. I am now stuck at this .. the send via box opens up .. i select email .. but all i get is a blank email
private void shareIt(MediaPlayer mPlayer) {
//sharing implementation here
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("audio/mp3");
sharingIntent.putExtra(Intent.EXTRA_SUBJECT,"Ringtone File:"+getResources().getResourceEntryName(mPlayer)+".mp3");
sharingIntent.putExtra(Intent.EXTRA_TEXT,"Ringtone File : "+getResources().getResourceEntryName(mPlayer)+".mp3");
sharingIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("android.resource://com.my.android.soundfiles/"+mPlayer));
sharingIntent.putExtra("sms_body","Ringtone File : "+getResources().getResourceEntryName(mPlayer)+".mp3");
startActivity(Intent.createChooser(sharingIntent, "Share Sound File"));
}
});
You're not doing anything with your sharingIntent, just creating it.