Отправить намерение в приложение медиаплеера с InputStream - PullRequest
3 голосов
/ 12 декабря 2011

После долгих поисков я не нашел ответа, как решить проблему, описанную в заголовке.

Я хочу отправить намерение в систему, чтобы воспроизвести некоторые медиа. Это может быть где угодно, в зашифрованном виде, на FTP-сервере или на моем компьютере через SMB-доступ. Я использую потоки ввода и вывода в качестве канала между различными протоколами, поэтому между ними можно скопировать файл без каких-либо препятствий.

Чего я хочу добиться, так это предоставить доступ к этому потоку ввода для любого потокового приложения, доступного в системе. Например, потоковое приложение может воспроизводить песню, расположенную на общих ресурсах SMB моего компьютера, или напрямую из зашифрованного zip-файла, не распаковывая и не загружая его, а только используя указанный входной поток.

Единственное, что я обнаружил, это потоковая передача по HTTP-URL, что не в моем случае. Кто-нибудь знает возможное решение для этого?

1 Ответ

2 голосов
/ 07 августа 2012

Еще не пробовал, но я бы предположил, что вам нужно будет указать Uri файла, который будет открыт внешним приложением, и провайдера, соответствующего этому Uri.

например, если у вас есть smb: // ... Uri, вам нужен установленный провайдер, чтобы справиться с этим.

Или это может быть пользовательский Uri, такой как mycustomprovider: //, а оставшаяся часть Uri будет зависеть от приложения.

EDIT: большинство файловых менеджеров используют локальное HTTP-соединение. Они открывают поток и прослушивают определенный порт HTTP для подачи потока в него.

РЕДАКТИРОВАТЬ2: Вот решение с использованием HTTP: Программирование на Android ServerSocket с потоковыми файлами jCIFS

Хотя передать InputStream было бы намного проще;) действительно!

...