我接听电话后想拨打一个号码,通常由通话拨号盘完成.
我尝试了以下方法,但是开始拨打新的电话(ACTION_VIEW也是如此).
Intent dial = new Intent(Intent.ACTION_DIAL);
dial.setData(Uri.parse("tel:9"));
startActivity(dial);
Run Code Online (Sandbox Code Playgroud)
我的猜测是"tel:"触发了一个新的拨号序列.我可能需要的是显示通话中的拨号盘并模拟击键.
任何人?
编辑:我发现这个问题 启动InCallScreen活动 让我觉得我需要发送一个keydown事件到'com.android.phone.InCallScreen',但我不知道该怎么做.这也是一个直接相关的问题,已经(并且仍然)开放多年:http: //code.google.com/p/android/issues/detail?id = 1428
我正在寻找de/interleave缓冲区的最快方法.更具体地说,我正在处理音频数据,所以我试图优化分配/组合通道和FFT缓冲区的时间.
目前我正在为每个数组使用一个带有2个索引变量的for循环,所以只加上操作,但所有托管数组检查都不会与C指针方法进行比较.
我喜欢Buffer.BlockCopy和Array.Copy方法,这些方法在处理通道时会花费大量时间,但是阵列无法拥有自定义索引器.
我试图找到一种方法来制作一个数组掩码,它将是一个带有自定义索引器的虚假数组,但在我的FFT运算中使用它时证明速度慢了两倍.我想编译器在直接访问数组时可以提取很多优化技巧,但无法优化通过类索引器进行访问.
我不想要一个不安全的解决方案,尽管从它的外观来看,这可能是优化此类操作的唯一方法.
谢谢.
这是我现在正在做的事情:
private float[][] DeInterleave(float[] buffer, int channels)
{
float[][] tempbuf = new float[channels][];
int length = buffer.Length / channels;
for (int c = 0; c < channels; c++)
{
tempbuf[c] = new float[length];
for (int i = 0, offset = c; i < tempbuf[c].Length; i++, offset += channels)
tempbuf[c][i] = buffer[offset];
}
return tempbuf;
}
Run Code Online (Sandbox Code Playgroud)