android call and audio

    • mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system

      ConnCtl *:s

    • android audio (http://blog.csdn.net/myspor/article/details/6278788)
    • android Phone 距离感应器锁的实现(http://blog.csdn.net/nadiee/article/details/17219903)
    • android -- 蓝牙 bluetooth (五)接电话与听音乐(http://blog.csdn.net/baimy1985/article/details/9275559)
    • Android手机听筒和扬声器切换

      分类: android
      AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
       private void setSpeakerphoneOn(boolean on) {
                       if(on) {
                               audioManager.setSpeakerphoneOn(true);
                       } else {
                               audioManager.setSpeakerphoneOn(false);//关闭扬声器
                               audioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
                               setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
                               //把声音设定成Earpiece(听筒)出来,设定为正在通话中
                               audioManager.setMode(AudioManager.MODE_IN_CALL);
                       }
       }
  • 如果有 android 源代码,直接编译出 framework.jar。把这个jar包加到你的项目classpath里,然后那些hidden, internal 的类和方法都可以直接用了。
  •    try {  
  •                     Toast.makeText(getApplicationContext(), "dddd", 1).show();  
  •                     ITelephony it = PhoneUtil.getITelephony(tlmar);  
  •                     it.silenceRinger();  
  •                                            //   it.endCall();//拒接   
  •                     it.answerRingingCall();//自动接听   
  •                 } catch (Exception e) {  
  •                     // TODO Auto-generated catch block   
  •                     e.printStackTrace();  
  •                 }  

  

 

1、电话拦截

       这个功能大家可能都知道了,就是利用反射原理调用ITelephony的隐藏方法来实现。

  1.  //利用反射获取隐藏的endcall方法     
  2.         TelephonyManager telephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);     
  3.   try {     
  4.    Method getITelephonyMethod = TelephonyManager.class.getDeclaredMethod("getITelephony", (Class[]) null);     
  5.    getITelephonyMethod.setAccessible(true);     
  6.    iTelephony = (ITelephony) getITelephonyMethod.invoke(telephonyMgr, (Object[]) null);     
  7.      } catch (Exception e) {     
  8.       e.printStackTrace();     
  9.      }     
  10.     }     
  1. //挂断电话     
  2.       iTelephony.endCall(); 

 

       2、拦截后提示忙音/空号/已关机/已停机

       这个功能其实是要用到MMI指令,具体如何设置呼叫转移的指定可以参考这里 http://baike.baidu.com/view/206402.html?fromTaglist。

       在本文中我们会用到“遇忙转移”的功能。中国移动的设置方式是 **67#电话号码#,取消方式为 ##67#。”无条件转移“用21代替67即可。这两个指令可以直接在手机的拨号界面输入并拨号测试。ITelephony的endcall方法挂断电话后,会提示电话忙。如果事前设置好了忙时转移到一个空号/已关机/已停机的电话号码,就会提示您拨的电话号码是空号/已关机/已停机。

       其实大家可以下载 xxx卫士看下,它设置来电拒接模式后,都是会启动设置MMI指令的界面。然后再去“设置->通话设置->来电转接”,看看 “占线时转接” 设置好的电话号码,就可以知道空号/已关机/已停机对应的电话号码是什么了。

  1.  Message message = mHandler.obtainMessage();     
  2.     message.what = OP_REGISTER;     
  3.     mHandler.dispatchMessage(message);  
    1.         mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);     
      1. //先静音处理     
      2.            mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);     
        1.      //再恢复正常铃声     
        2.                  mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
        1.  private Handler mHandler = new Handler() {     
        2.   public void handleMessage(Message response) {     
        3.       int what = response.what;     
        4.       switch(what) {     
        5.        case OP_REGISTER:{     
        6.         Intent i = new Intent(Intent.ACTION_CALL);     
        7.               i.setData(Uri.parse(ENABLE_SERVICE));     
        8.               startActivity(i);     
        9.         break;     
        10.        }     
        11.        case OP_CANCEL:{     
        12.         Intent i = new Intent(Intent.ACTION_CALL);     
        13.               i.setData(Uri.parse(DISABLE_SERVICE));     
        14.               startActivity(i);     
        15.         break;     
        16.        }     
        17.       }     
        18.   }     
        19.  };     

 

posted on 2015-10-25 18:41  szllq2000  阅读(341)  评论(0编辑  收藏  举报