Obtenir l'accès aux media player cache
Je veux déplacer progressivement en streaming fichier mp3 sur la carte sd une fois qu'il est complètement chargé. Est-il possible de réaliser cela.
J'ai vu que le MediaPlayer
complètement télécharge le fichier entier tandis que progressive streaming et alors nous pouvons chercher à n'importe quelle partie du fichier. Je veux déplacer un entièrement en streaming fichier de stockage externe, de sorte que l'avenir de la lecture ne sont pas de données sur les déchets et la batterie.
Meilleure réponse ici, si quelqu'un cherche toujours la solution: stackoverflow.com/a/12044709/1548464
OriginalL'auteur Rahul Verma | 2012-10-03
Vous devez vous connecter pour publier un commentaire.
Le commentaire sur le post original de points vous dans la bonne direction, mais j'ai pensé qu'il pourrait être utile d'expliquer un peu...
Ce que j'ai fait est de construire un léger serveur proxy à l'aide de l'Apache HTTP bibliothèques. Il devrait y avoir beaucoup d'exemples pour obtenir les bases de cette partie. Fournir le MediaPlayer approprié localhost URL afin qu'il ouvre une socket de votre proxy. Lorsque le lecteur multimédia de la requête, utiliser le proxy pour envoyer un équivalent en demande de à l'accueil des médias. Vous recevrez byte[] données dans la procuration est packetReceived méthode que j'utilise pour construire un HttpGet et de l'envoyer sur son chemin avec AndroidHttpClient.
Vous recevrez un HttpResponse et vous pouvez utiliser le HttpEntity à l'intérieur pour accéder à la diffusion en continu d'octets de données. Je suis à l'aide d'un ReadableByteChannel, comme suit:
Faire tout ce que vous souhaitez avec les données comme vous le lire (comme le cache dans un fichier sur la carte SD). Passer les bonnes choses sur le MediaPlayer, obtenir le SocketChannel de la Socket client, premier à écrire les en-têtes de réponse directement à ce canal, puis passez à l'écriture de l'entité d'octets de données. Je suis à l'aide d'un NIO ByteBuffer dans une boucle while (client est un Socket et le tampon est un ByteBuffer).
Vous devrez peut-être modifier l'en-tête d'hôte dans la réponse avant de la transmettre au joueur afin qu'il ressemble à votre proxy est l'expéditeur, mais je fais face à un propriétaire de mise en œuvre de la MediaPlayer donc le comportement pourrait être un peu différente. Espérons que cela aide.
comment pouvons-nous intercepter le mediaplayer demande?
OriginalL'auteur Dave
L'idée est de créer un proxy que le lecteur multimédia peut lire, au lieu de lire les données directement à partir du web.
J'ai utilisé danikula/AndroidVideoCache qui est très simple à construire/utilisation.
Je l'ai utilisé pour l'Audio, pas de Vidéo, mais il est tout de même.
Comment puis-je crypter le fichier de cache?
OriginalL'auteur Asaf Pinhassi