java - Blackberry 不支持 getSnapshot

标签 java blackberry video-capture

我在使用 VideoControl.getSnapshot() 方法拍照时遇到问题。它总是抛出异常:getSnapshot not Supported。我将 JRE 5.0.0 与 Eclipse 和 BlackBerry® Java® SDK 5.0 插件结合使用。

我首先要做的是使用命令 System.getProperty("video.snapshot.encodings") 列出所选 Blackberry SmartPhone 支持的编码(粗体 9700),然后从列表中选择一种编码并将其作为 getSnapshot 参数传递.

我在几个 Blackberry 上进行了测试,并且抛出了相同的异常。

部分代码:

mPlayer = Manager.createPlayer("capture://video?encoding=video/3gpp");

mPlayer.realize();

mPlayer = Manager.createPlayer("capture://video?encoding=video/3gpp");

mPlayer.start();

videoControl = (VideoControl)mPlayer.getControl("VideoControl");

Field cameraView = (Field) videoControl.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field");

Thread.sleep(1000);

UiApplication.getUiApplication().pushScreen(new TempScreen(cameraView));

byte[] snapShot = videoControl.getSnapshot("encoding=jpeg&width=480&height=360&quality=superfine");

Bitmap image = Bitmap.createBitmapFromBytes(snapShot, 0, snapShot.length, 1);

UiApplication.getUiApplication().pushScreen(new TempScreen(image));

}catch (MediaException e){
UiApplication.getUiApplication().pushScreen(new TempScreen("Exception: " + e.getMessage())); }

catch (IOException e){
UiApplication.getUiApplication().pushScreen(new TempScreen("IO Exception: " + e.getMessage())); 
}

catch (InterruptedException e){UiApplication.getUiApplication().pushScreen(new TempScreen("Interrupted Exception: "+ e.getMessage()));}

最佳答案

不确定我的答案在半年多后是否真实,但可能会有用。

您可以尝试使用Thread.sleep(1000);在 getSnapshot() 调用之前。 该问题可能与以下事实有关:“在调用 getSnapShot() 之前,取景器实际上必须在屏幕上可见。”

因此,如果您在

UiApplication.getUiApplication().pushScreen(new TempScreen(cameraView));
之后立即调用 getSnapshot 相机尚未准备好进行下一次拍摄。

此外,您真的确定您的设备完全支持 getSnapshot() API 吗?尽管 API 定义了此方法,但某些制造商可能不支持它。您是否在测试 getSnapshot() 的同一设备上运行 System.getProperty("video.snapshot.encodings")?

关于java - Blackberry 不支持 getSnapshot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3655638/

相关文章:

c++ - 编写我的第一个黑莓应用程序

linux opencv VideoCapture 没有打开视频文件

java - java中的正则表达式

java - 如何在 Java 中的循环中重置变量?

JavaME Base64InputStream.decode() 字符串大小限制为 64k

linux - 桌面录制时的视频质量较差

c - openCV 错误 : Assertion failed (scn == 3 || scn == 4)

java - 尽管使用了着色 jar,但 cassandra 的 Java 驱动程序 3.0 中仍出现 IllegalStateException

java - 如何在 Servlet 2.4 版本的 init() 方法中获取 ContextPath

html - 使用 CSS 隐藏内容而不显示 :none or JavaScript