5

我想问有没有应用程序,用户可以通过 OTG 电缆设备将 USB 连接到 Android 并播放它包含的媒体(特别是视频)。

我制作了一个广播接收器来检测连接的 USB,我也想阅读内容。我正在使用这个代码片段。

                    private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {

                            public void onReceive(Context context, Intent intent) {
                                String action = intent.getAction();
                                if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
                                    synchronized (this) {
                                        UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

                                        if(device != null){
                                              //                        
                                            Log.d("1","DEATTCHED-" + device);
                                          }
                                    }
                                }
                    //
                                if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
                                    synchronized (this) {
                                        UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                                        if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {

                                            if(device != null){
                                              //

                                                Log.d("1","ATTACHED-" + device);
                                           }
                                        } 
                                        else {
                                            PendingIntent mPermissionIntent;
                                            mPermissionIntent = PendingIntent.getBroadcast(MainActivity.this, 0, new Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_ONE_SHOT);                       
                                            mUsbManager.requestPermission(device, mPermissionIntent);

                                        }                   

                                    }
                                }
                    //
                                if (ACTION_USB_PERMISSION.equals(action)) {
                                    synchronized (this) {
                                        UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                                        if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {

                                            if(device != null){
                                              //

                                                Log.d("1","PERMISSION-" + device);
                                           }
                                        }                   
                                    }
                                }           
                            }
                        };  

我想做这样的申请。

有人对此有什么想法吗?

4

2 回答 2

2

经过多天的研究,我找到了解决方案

https://github.com/1hakr/AnExplorer

于 2015-07-17T11:59:01.593 回答
0

将视频分成多个子视频可能对您有用。

我的建议是:不要将完整视频保存在一个临时路径中,而是将该视频分成多个子视频,然后相应地替换 AVPlayer 的 AVPlayerItem 属性。

所以现在功能与视频流相同。:)

您还可以将 AVAssetReader 返回的 CMSampleBuffer 转换为 CGImage,然后转换为 UIImage 并将其显示在 UIImageView 中,以便在从原始视频文件中提取帧时对其进行渲染。

AVFoundation Programming Guide 中有示例代码展示了如何进行这种转换。

于 2015-07-02T08:24:08.020 回答