Comment enregistrer les appels téléphoniques dans android?
Je veux faire une application qui enregistre les appels entrants et sortants et qu'il s'exécute automatiquement lorsque l'utilisateur d'obtenir ou de faire un appel.
- essayez ceci: stackoverflow.com/questions/45880954/...
Vous devez vous connecter pour publier un commentaire.
Ok, pour cette première de tous, vous devez utiliser un Dispositif Gestionnaire de la Politique, et la nécessité de mettre votre appareil Administrateur de l'appareil. Après cela, vous devez créer un récepteur de Radiodiffusion et un service. Je vous poste le code ici et sa fonctionne très bien.
MainActivity:
//DeviceAdminDemo classe
//TService Classe
//Autorisation dans le fichier de manifeste
//my_admin.xml
//Déclarer la chose suivante dans le manifeste:
Déclarer DeviceAdminDemo classe de manifester:
AudioSource
à utiliser pour l'enregistrement des appels vocaux estVOICE_CALL
.VOICE_COMMUNICATION
c'est MIC, est de mauvaise qualité!DevicePolicyManager
ici?Toast.makeText(context, "File Path" + audiofile.getAbsolutePath(), Toast.LENGTH_LONG).show();
à votre TService.java fichier aprèsaudiofile = File.createTempFile(file_name, ".amr", sampleDir);
Code ci-dessous fonctionne pour moi à enregistrer un sortant de téléphone d'appel
//mettre cette méthode à l'extérieur de oncreate() la méthode
//ci-dessous une partie de code pour faire de votre appareil sur le haut-parleur
//ci-dessous une partie de code pour démarrer l'enregistrement
//Pour arrêter l'enregistrement et de garder à l'esprit pour définir haut-parleur pendant un appel terminer un ou arrêter
Et donner l'autorisation de fichier de manifeste,
Je voudrais faire un commentaire sur cette, même les plus difficiles de Son ancien poste. Donc, fondamentalement, je veux combiner les 2 réponses, à partir de ce poste et de le une de l'autre post que j'ai lu, je ne sais pas l'auteur de il plaît désolé pour l'utilisation de vos méthodes.
Donc, voici mes classes pour achieveving résultat souhaité:
Et mon
TService
classe:à l'intérieur de
TService
classe, vous trouverezCallReceiever
classe qui va gérer tout ce dont vous avez besoin à partir de l'appel. Vous pouvez ajouter des paramètres conformément à votre volonté, mais le point principal est important.De votre MainActvitiy appel de Service qui permettra de démarrer votre Receiever. Si vous souhaitez enregistrer des médias à partir receiever directement, vous obtiendrez des erreurs, donc, vous devez vous inscrire Receiever de service. Après cela, vous pouvez appeler commencer l'enregistrement et à la fin de l'enregistrement où vous le souhaitez.
L'appel de
return super.onStartCommand(intent, flags, startId);
aura de Service d'une durée de plus d'un appel, donc gardez cela à l'esprit.Enfin,
AndroidManifest.xml
fichier:Donc, ça y est, le son fonctionne parfaitement avec mon Samsung Galaxy s6 Edge+, j'ai testé sur Galaxy Note 4 et le Samsung J5, un grand merci aux auteurs de ce post et le post sur receieving appels téléphoniques.
startService(new Intent(this, StartService.class)); startService(new Intent(this, SmsOutgoingService.class));
sont utilisés pour?La réponse de pratt est un peu incomplète, parce que lorsque vous redémarrez votre appareil et votre application sera l'arrêt de travail, l'enregistrement s'arrêter, son devenir inutile.
je m en ajoutant quelques ligne que les copier dans votre projet pour un travail complet de Pratt réponse.
mettez ce code dans onReceive de DeviceAdminDemo
<category android:name="android.intent.category.HOME" />
faire de vous un récepteur déclaration?Accepté la réponse est parfait, sauf qu'il n'enregistre pas les appels sortants. Notez que pour les appels sortants, il n'est pas possible (aussi loin que je peux dire de récurer un grand nombre de postes) pour détecter le moment où l'appel est effectivement répondu (si quelqu'un peut trouver un moyen autre que de récurer les notifications ou les journaux s'il vous plaît laissez-moi savoir). La solution la plus simple est juste de démarrer l'enregistrement tout de suite lors de l'appel sortant est placé et arrêter l'enregistrement en cas d'INACTIVITÉ est détecté. Tout en ajoutant la même classe que ci-dessus avec les sortant de l'enregistrement de cette manière est complet:
ACTION_OUT
?Il existe une solution simple à ce problème en utilisant cette de la bibliothèque. Je le stockage d'une instance de la CallRecord classe MyService.class. Lorsque le service est d'abord initialisé, le code suivant est exécuté:
Prochaine, n'oubliez pas de spécifier des autorisations dans le manifeste. (J'ai peut-être quelques extras ici, mais gardez à l'esprit que certains d'entre eux sont nécessaires uniquement pour les versions plus récentes d'Android)
Aussi, il est crucial de demander des autorisations lors du premier démarrage de l'application. Un guide est fourni ici.
Si mon code ne fonctionne pas, alternative code peut être trouvé ici. J'espère que je vous ai aidé.