Android- Stop Telephony Manager service -
actually new android developer , having stop button in activity class , want stop telephony service not record call after stop button clicked not stoping service , itis recording call. please resolve problem
my activity class is
package com.jain.callrecorderdemo; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; public class mainactivity extends activity { button startbtn, stopbtn; @override protected void oncreate(bundle savedinstancestate) { setcontentview(r.layout.main); super.oncreate(savedinstancestate); startbtn = (button) findviewbyid(r.id.startbtnid); stopbtn = (button) findviewbyid(r.id.stopbtnid); startbtn.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { intent in = new intent(getapplicationcontext(), callrecordingservice.class); startservice(in); } }); stopbtn.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { intent in = new intent(getapplicationcontext(), callrecordingservice.class); stopservice(in); } }); } }
my callrecorder service
package com.jain.callrecorderdemo; import java.io.file; import java.io.ioexception; import android.app.service; import android.content.intent; import android.media.mediarecorder; import android.os.environment; import android.os.ibinder; import android.preference.preferencemanager.onactivitystoplistener; import android.telephony.phonestatelistener; import android.telephony.telephonymanager; import android.widget.toast; public class callrecordingservice extends service{ telephonymanager tm; mediarecorder mr; static int x=0; int id; @override public ibinder onbind(intent intent) { // todo auto-generated method stub return null; } @override public int onstartcommand(intent intent, int flags, int startid) { id=startid; tm=(telephonymanager) getsystemservice(telephony_service); tm.listen(new myphonelistener(), phonestatelistener.listen_call_state); return super.onstartcommand(intent, flags, startid); } @override public void ondestroy() { toast.maketext(getapplicationcontext(), "call recorder off", toast.length_long).show(); super.ondestroy(); } class myphonelistener extends phonestatelistener { @override public void oncallstatechanged(int state, string incomingnumber) { super.oncallstatechanged(state, incomingnumber); switch (state) { case telephonymanager.call_state_idle: toast.maketext(getapplicationcontext(), "idle", toast.length_long).show(); try { mr.release(); } catch (exception e) { toast.maketext(getapplicationcontext(), e.tostring(), toast.length_long).show(); } break; case telephonymanager.call_state_ringing: toast.maketext(getapplicationcontext(), "ringing", toast.length_long).show(); break; case telephonymanager.call_state_offhook: toast.maketext(getapplicationcontext(), "offhook", toast.length_long).show(); try { mr=new mediarecorder(); mr.setaudiosource(mediarecorder.audiosource.mic); mr.setoutputformat(mediarecorder.outputformat.mpeg_4); mr.setaudioencoder(mediarecorder.audioencoder.default); file mysdpath=environment.getexternalstoragedirectory(); file mydir=new file(mysdpath,"recording_folder"); if(mydir.exists()==false) { mydir.mkdir(); } string filepath=mydir.getabsolutepath()+"/recorderfile"+(x++)+".mp3"; mr.setoutputfile(filepath); mr.prepare(); mr.start(); toast.maketext(getapplicationcontext(), "recording started", toast.length_long).show(); } catch (illegalstateexception e) { toast.maketext(getapplicationcontext(), e.tostring(), toast.length_long).show(); e.printstacktrace(); } catch (ioexception e) { toast.maketext(getapplicationcontext(), e.tostring(), toast.length_long).show(); e.printstacktrace(); } break; } } } }
my manifest file is
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.jain.callrecorderdemo" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="7" android:targetsdkversion="23" /> <uses-permission android:name="android.permission.read_phone_state"/> <uses-permission android:name="android.permission.write_external_storage"/> <uses-permission android:name="android.permission.record_audio"/> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="mainactivity"> <intent-filter> <action android:name="android.intent.action.main"/> <category android:name="android.intent.category.launcher"/> </intent-filter> </activity> <service android:name="callrecordingservice"></service> </application> </manifest>
you can use listen_none parameter stop listening updates.
telephonymanager.listen(phonestatelistener, phonestatelistener.listen_none );
hope you, thanks.
Comments
Post a Comment