在我的应用程序中,当呼叫到来但用户没有回答时,我应该做一些动作.
我在android.telephony和NotificationManager中搜索过,但是我还没有找到解决这个问题的方法.
有人知道如何知道手机上是否有未接来电?
我试图CallManager从com.android.internal.telephony包中访问类对象.
这是我的代码:
ClassLoader classLoader = TestActivity.class.getClassLoader();
final ClassLoader classLoader = this.getClass().getClassLoader();
try {
final Class<?> classCallManager =
classLoader.loadClass("com.android.internal.telephony.CallManager");
Log.i("TestActivity", classCallManager);
} catch (final ClassNotFoundException e) {
Log.e("TestActivity", e);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是扔了一个ClassNotFoundException.同样的方法允许我访问PhoneFactory,但显然我不允许访问CallManager.
如果我能够上课,那么我想继续使用该课程,如下所示:
Method method_getInstance;
method_getInstance = classCallManager.getDeclaredMethod("getInstance");
method_getInstance.setAccessible(true);
Object callManagerInstance = method_getInstance.invoke(null);
Run Code Online (Sandbox Code Playgroud)
谁可以帮我这个事?
在此先感谢,
Harsha C.
我正在尝试为某人提供一个"点击拨号"解决方案,如蓝牙设备,如手机.我一直试图使用32feet.net bluetooth api这样做.
我没有真正用蓝牙做任何事情(因为通过蓝牙串口发出命令的日子)但我已经配对有问题的设备,它支持pc的免提服务.我有以下代码尝试连接并发送拨号命令.
String deviceAddr = "11:11:11:11:11:11";
BluetoothAddress addr = BluetoothAddress.Parse(deviceAddr);
BluetoothEndPoint rep = new BluetoothEndPoint(addr, BluetoothService.Handsfree);
BluetoothClient cli = new BluetoothClient();
cli.Connect(rep);
Stream peerStream = cli.GetStream();
String dialCmd = "ATD 0000000000\r\n";
Byte[] dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd);
peerStream.Write(dcB, 0, dcB.Length);
// Begin Edit ------------------------------------------------------------
Byte[] sResponse = new Byte[100];
peerStream.Read(sResponse, 0, 99);
TextBox1.Text = System.Text.Encoding.ASCII.GetString(sResponse);
// End Edit --------------------------------------------------------------
peerStream.Close();
cli.Close();
MessageBox.Show("Done");
Run Code Online (Sandbox Code Playgroud)
因为它似乎贯穿了这些代码行,所以在适当的时间连接相关的位置,如果设备地址错误且无法连接,则会崩溃.显然,AT命令不是发送它的正确方法.
任何人都可以通过免提配置文件告诉我可能需要发送到蓝牙设备以使其拨号吗?
开始编辑-------------------------------------------
我决定从流中读取并查看在发送AT命令后是否有任何类型的响应.由于我只是在测试是否可以使其工作,我只是将响应转储到文本框中.
我从流中读到的响应是:
ERROR
Run Code Online (Sandbox Code Playgroud)
似乎没有错误代码或任何东西.
结束编辑---------------------------------------------
编辑------------------------------------------------- -
发送命令:AT + CMER\r \n
结果:好的
然后
发送命令:AT + …
在我的应用程序中,我将保留联系人列表.
来自列表中的联系人的任何呼叫都将被删除.他们将在未接来电时显示,但手机不会响铃.
我有一部带2张SIM卡的Android手机,我想检测来电的目标 - 是SIM卡还是SIM卡2.是否可以从通话信息中获取目标号码?
我有一个应用程序需要找出用户拥有的电话号码的国家代码.我的理解是,我不能只获得用户的电话号码,但是,有没有办法,例如,如果我有一个美国电话号码来获得国家代码+1?
我找到了多个答案,声称使用核心电话,您可以获得国家代码"+1",但我尝试了一些,但没有一个工作.
我试过这个:
CTTelephonyNetworkInfo *network_Info = [CTTelephonyNetworkInfo new];
CTCarrier *carrier = network_Info.subscriberCellularProvider;
NSString *mnc = [carrier mobileNetworkCode];
NSString *mcc = [carrier mobileCountryCode];
NSLog(@"country code is: %@, mnc: %@, mcc: %@", carrier.mobileCountryCode, mnc, mcc);
Run Code Online (Sandbox Code Playgroud)
打印:
"country code is: 310, mnc: 410, mcc: 310"
Run Code Online (Sandbox Code Playgroud)
所以,对于一个美国号码,我想获得+1.
有没有办法做到这一点?
编辑:进一步搜索我发现:
如何在不使用位置信息的情况下将MCC + MNC映射到iOS objective-C中的用户手机国家/地区代码?
它可能会成功,但我一直在寻找更正式的方法来做到这一点.
我注意到在类TelephonyManager中有CALL_STATE_IDLE,CALL_STATE_OFFHOOK和CALL_STATE_RINGING.它们似乎用于来电.
我真正想做的是在拨打电话,接听电话或超时时收到通知.怎么做?
如何从我的Android类中检测到,我从代码中调用的号码正忙,呼叫被拒绝了?我尝试使用PhoneStateListener,但没有像'busy'这样的状态.任何帮助将不胜感激.
是否可以将Android手机用作简单的GSM网关?
手机将使用(最好)Android内置SIP协议栈,发起GSM呼叫以及双向桥接音频来接收VoiP呼叫.一个呼叫终止后,另一个呼叫也结束.
我怎么能解决这个问题?我之前的尝试未能在连接之间桥接音频.是否有支持SDK的方式,我错过了?或者我是否需要实施某种解决方法?
我花了很多天时间学习更多关于WebRTC,SIP和PSTN以及它们如何协同工作,特别是在浏览器中接收电话的能力.我花了很多时间在Twilio的网站上,我喜欢他们能够让你接到一个从PSTN到你的浏览器的电话.
我真的想了解他们如何能够让某人拨打正常的PSTN电话号码并将呼叫定向到网络浏览器.
我碰到了这个问题来自SIP和WebRTC的来电并得到了一些了解,但有一些东西仍然缺失,需要有人为我连接点,以便我可以充分了解.
为了让您理解我的问题并给出明确的答案,让我们采取以下场景::
第一部分:::我们假设我住在伦敦并拥有自己的SIP服务器和SIP帐户并拥有一个PSTN电话号码,并且该号码被映射到SIP帐户.现在我希望能够在浏览器中接听来自世界各地的电话.当人们拨打PSTN号码时,呼叫将通过我的电信提供商.那么这些电话如何进入我的浏览器?在将呼叫定向到浏览器之前,是否必须将SIP服务器连接到电信提供商系统?
这是否意味着能够将呼叫定向到浏览器,电信公司系统必须知道对于这个特定的PSTN号码,呼叫必须来到我的SIP服务器或类似的东西?
我想知道进入我的浏览器的所有步骤,包括软件和(可能是硬件)介于两者之间.
第二部分::: Twilio给那些想要他们的人提供本地号码.据我所知,Twilio与电信公司签订协议以获取这些数字.Twilio系统是否可以连接到所有这些电信公司系统,然后才能将呼叫定向到用户的浏览器?
谢谢你的帮助.