2011-05-18 3 views
0

Dans mon application, je veux enregistrer l'appel jusqu'à 10 minutes. Y a-t-il un moyen de l'implémenter?Call Recorder dans Blackberry

Toute aide est très appréciée.

Répondre

1

Oui, vous devez vous inscrire PhoneListener avec votre demande et doivent mettre en œuvre les méthodes nécessaires comme:

callInitiated() callEnded() etc. Etc

-à-dire chaque fois appel particulier s'initié, vous pouvez écouter cet événement et exécuter code personnalisé.

Vous pouvez utiliser la classe PhoneCall pour lire les informations d'appel.

Espérons que cela aide.

+0

Merci pour la réponse. Il n'y aura donc aucun problème de sécurité pour l'enregistrement de l'appel. J'ai demandé cela parce que, j'ai entendu cela, IPhone ne permet pas la fonctionnalité d'enregistrement d'appel. – Kris

3

Je pense que cela fonctionne:

Call Recorder pour Blackberry

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

Je crois qu'un enregistreur d'appel pour BB ne fonctionne que sur haut-parleur. – Swati

+0

il va enregistrer plusieurs fichiers en même temps .. Pourquoi .... ?? –