使用 InputStream 将意图发送到媒体播放器应用程序

发布于 2024-12-20 16:48:59 字数 333 浏览 1 评论 0原文

经过大量搜索,我没有找到任何答案如何解决标题中描述的问题。

我想向系统发送意图以便播放一些媒体。它可以存在于任何地方,在加密的 zip 中、在 FTP 服务器上或通过 SMB 访问在我的 PC 上。我使用输入和输出流作为不同协议之间的管道,因此可以毫无障碍地在它们之间复制文件。

我想要实现的是为系统中可用的任何流应用程序提供对此输入流的访问权限。例如,流媒体应用程序可以播放位于我的电脑的 SMB 共享上的歌曲,或者直接从加密的 zip 中播放歌曲,而无需提取/下载它,仅使用给定的输入流。

到目前为止,我发现的唯一的事情是从 HTTP url 进行流式传输,但这不是我的情况。有谁知道可能的解决方案?

After lots of searching I didn't find any answer how to solve the problem described in the title.

I want to send intent to the system in order to play some media. It can be everywhere, in an encrypted zip, on FTP server or on my PC via SMB access. I use input and output streams as a pipe between different protocols, so a file can be copied between them without any obstacles.

What i want to achieve is to give an access to this input stream for any streaming app available in the system. For example the streaming app can play a song located on my PC's SMB shares or directly from an encrypted zip without extracting/downloading it, only using the given input stream.

The only thing I have found so far is streaming from HTTP urls which is not my case. Does anyone know a possible solution for that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

明天过后 2024-12-27 16:48:59

还没有尝试过,但我假设您必须提供要由外部应用程序打开的文件的 Uri 以及与此 Uri 匹配的提供程序。

例如,如果您有 smb://... Uri,那么您需要安装一个提供程序来处理此问题。

或者它可以是自定义 Uri,如 mycustomprovider://,而 Uri 的其余部分将是特定于应用程序的。

编辑:大多数文件管理器所做的是使用本地 HTTP 连接。他们打开流并侦听特定的 HTTP 端口以将流送入其中。

EDIT2:这是使用HTTP的解决方案:使用jCIFS流文件进行Android ServerSocket编程

虽然传递一个 InputStream 会容易得多;)确实如此!

Haven't tried yet, but I would assume you would have to provide the Uri of the file to be opened by the external app AND a provider matching this Uri.

eg if you have a smb://... Uri, then you need a provider installed to handle this.

Or it could be a custom Uri like mycustomprovider://, and the remaining of the Uri would be app-specific.

EDIT: What most file manager do is user a local HTTP connection. They open the stream and listen to a specific HTTP port to feed the stream into it.

EDIT2: Here is the solution using HTTP: Android ServerSocket programming with jCIFS streaming files

Though passing an InputStream would be so much easier ;) indeed!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文