Q
黑莓通話記錄器
0
A
回答
1
是的,你需要註冊PhoneListener
與應用程序和需要實現所需的方法,如:
callInitiated()
callEnded()
etc..etc
即每當特定呼叫被髮起,你可以聽該事件並執行自定義代碼。
您可以使用PhoneCall
類讀取呼叫信息。
希望這會有所幫助。
3
,我認爲它的工作原理:黑莓
通話記錄
public final class MyScreen extends MainScreen {
/**
* Creates a new MyScreen objects
*
*/
Player player;
RecordControl recorder;
private ByteArrayOutputStream output;
byte[] data;
boolean yes = false;
int st;
public MyScreen() {
// Set the displayed title of the screen
setTitle("Call Recorder");
Phone.addPhoneListener(new PhoneListener() {
public void conferenceCallDisconnected(int callId) {
// TODO Auto-generated method stub
}
public void callWaiting(int callid) {
// TODO Auto-generated method stub
}
public void callResumed(int callId) {
// TODO Auto-generated method stub
}
public void callRemoved(int callId) {
// TODO Auto-generated method stub
}
public void callInitiated(int callid) {
PhoneCall phoneCall = Phone.getCall(callid);
if (phoneCall != null) {
st = Dialog.ask(Dialog.D_YES_NO,
"Are u sure to record this call");
if (st == Dialog.YES)
yes = true;
else
yes = false;
// TODO Auto-generated method stub
}
}
public void callIncoming(int callId) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
Dialog.ask(Dialog.D_YES_NO, "Are u sure to record this call");
// TODO Auto-generated method stub
}
public void callHeld(int callId) {
// TODO Auto-generated method stub
}
public void callFailed(int callId, int reason) {
// TODO Auto-generated method stub
}
public void callEndedByUser(int callId) {
// TODO Auto-generated method stub
}
public void callDisconnected(int callId) {
// TODO Auto-generated method stub
if (yes) {
try {
recorder.commit();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
player.close();
data = output.toByteArray();
saveRecordedFile(data);
}
}
public void callDirectConnectDisconnected(int callId) {
// TODO Auto-generated method stub
}
public void callDirectConnectConnected(int callId) {
// TODO Auto-generated method stub
}
public void callConnected(int callId) {
// TODO Auto-generated method s
PhoneCall phoneCall = Phone.getCall(callId);
if (phoneCall != null) {
if (yes)
initPlay();
}
}
public void callConferenceCallEstablished(int callId) {
// TODO Auto-generated method stub
}
public void callAnswered(int callId) {
// TODO Auto-generated method stub
// yes = true;
// TODO Auto-generated method stub
}
public void callAdded(int callId) {
// TODO Auto-generated method stub
}
});
}
// private void initMenuItem() {
// final String[] path = new String[1];
// ApplicationDescriptor appDesc = ApplicationDescriptor
// .currentApplicationDescriptor();
//
// final ApplicationDescriptor newDesc = new ApplicationDescriptor(
// appDesc, path);
//
// ApplicationMenuItemRepository amir = ApplicationMenuItemRepository
// .getInstance();
// ApplicationMenuItem a = new ApplicationMenuItem(1) {
// public Object run(final Object context) {
// Application.getApplication().invokeLater(new Runnable() {
//
// public void run() {
//
// }
// });
//
// return context;
// }
//
// public String toString() {
// return "Record Call";
// }
//
// };
// amir.addMenuItem(ApplicationMenuItemRepository.MENUITEM_PHONE, a,
// newDesc);
//
// }
private void initPlay() {
// TODO Auto-generated method stub
try {
player = Manager.createPlayer("capture://audio");
player.realize();
recorder = (RecordControl) player.getControl("RecordControl");
output = new ByteArrayOutputStream();
recorder.setRecordStream(output);
recorder.startRecord();
player.start();
} catch (Exception e) {
// TODO: handle exception
Dialog.alert(e + "");
}
}
public static boolean saveRecordedFile(byte[] data) {
try {
String filePath1 = System.getProperty("fileconn.dir.music");
String fileName = "Call Recorder(";
boolean existed = true;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
try {
FileConnection fc = (FileConnection) Connector
.open(filePath1 + fileName + i + ").amr");
if (!fc.exists()) {
existed = false;
}
fc.close();
} catch (IOException e) {
Dialog.alert("unable to save");
return existed;
}
if (!existed) {
fileName += i + ").amr";
filePath1 += fileName;
break;
}
}
System.out.println(filePath1);
// output---file:///store/home/user/pictures/Photo Editor(10).bmp
System.out.println("");
FileConnection fconn = (FileConnection) javax.microedition.io.Connector
.open(filePath1, javax.microedition.io.Connector.READ_WRITE);
if (fconn.exists())
fconn.delete();
fconn.create();
OutputStream outputStream = fconn.openOutputStream();
outputStream.write(data);
outputStream.close();
fconn.close();
return true;
} catch (Exception e) {
}
return false;
}
}
+0
我相信BB的通話記錄器只有在免提通話時纔有效。 – Swati 2011-05-18 15:38:57
+0
它會同時保存多個文件.. 爲什麼.... ?? – 2011-11-15 09:45:01
相關問題
- 1. 取黑莓10通話記錄
- 2. 查看通話記錄歷史記錄後的黑莓通話方法?
- 3. 黑莓手機:如何獲得通話記錄/刪除通話記錄條目
- 4. 無法通過黑莓專門檢索通話記錄10
- 5. 更改通話記錄屏幕並推送自己的通話ID的黑莓
- 6. 如何刪除從黑莓設備的通話記錄編程方式
- 7. 在黑莓上點擊通話
- 8. 如何在黑莓手機中錄製通話?
- 9. 嘲笑黑莓電話
- 10. 黑莓 - 使用會話?
- 11. 刷新表模型適配器從它刪除記錄:黑莓
- 12. 通緝:WinAPI通話記錄器
- 13. 黑莓6黑莓5
- 14. Facebook登錄黑莓Webworks
- 15. Android。通話記錄
- 16. android通話記錄
- 17. 黑莓:通過黑莓企業服務器調用webservice的Java應用程序
- 18. 黑莓入門通知
- 19. 推送通知:黑莓
- 20. 黑莓收到通知。
- 21. 黑莓推送通知
- 22. 黑莓推送通知
- 23. 獲取通過GPS黑莓
- 24. 黑莓推送通知
- 25. 黑莓Midlet安裝通知
- 26. 添加VOIP通話記錄到通話記錄IOS
- 27. 黑莓:黑莓應用程序中的推送通知
- 28. 低量通話記錄器(Rx)
- 29. Android通話記錄監聽器
- 30. 通話記錄不保存記錄
感謝您的答覆。 因此,錄製通話不會有任何安全問題。我問這是因爲,我聽說,iPhone不允許通話錄音功能。 – Kris 2011-05-18 13:44:02