我们有一个用代号一编写的视频供应应用程序<我们正在使用com。代号1。媒体MediaPlayer使用本机播放器组件全屏显示视频<我们的客户注意到,当您按下快进键时(
播放视频的代码如下所示:;
...
private Media video;
...
(on EDT:)
InputStream input = {get video InputStream from path}
video = MediaManager.createMedia(input, "video/mp4", this::videoFinished);
video.setFullScreen(true);
video.setNativePlayerMode(true);
....
(after pressing the play button:)
if (video.isPlaying()) {
video.setTime(0);
video.pause();
}
video.prepare();
video.play();
...
private void videoFinished() {
{update UI after video has finished}
}
我从控制台收集了以下日志(如果有帮助的话);
2018-11-01 15:08:38.290366+1300 Main[2000:481106] [] <<<< AVOutputDeviceDiscoverySession (FigRouteDiscoverer) >>>> -[AVFigRouteDiscovererOutputDeviceDiscoverySessionImpl outputDeviceDiscoverySessionDidChangeDiscoveryMode:]: Setting device discovery mode to DiscoveryMode_None (client: Main)
2018-11-01 15:08:39.058905+1300 Main[2000:481106] [] <<<< AVOutputDeviceDiscoverySession (FigRouteDiscoverer) >>>> -[AVFigRouteDiscovererOutputDeviceDiscoverySessionImpl outputDeviceDiscoverySessionDidChangeDiscoveryMode:]: Setting device discovery mode to DiscoveryMode_Presence (client: Main)
2018-11-01 15:09:00.005725+1300 Main[2000:481106] Status bar could not find cached time string image. Rendering in-process.
2018-11-01 15:09:00.144446+1300 Main[2000:481106] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSAutoresizingMaskLayoutConstraint:0x10eb09790 h=-&- v=-&- _UIBackdropContentView:0x108d4a310.midY == _UIBackdropView:0x108d59fb0.midY (active)>",
"<NSAutoresizingMaskLayoutConstraint:0x10eb0abd0 h=-&- v=-&- _UIBackdropContentView:0x108d4a310.height == _UIBackdropView:0x108d59fb0.height (active)>",
"<NSLayoutConstraint:0x10ccf2440 V:|-(0)-[UIStatusBar:0x102922200] (active, names: '|':_UIBackdropContentView:0x108d4a310 )>",
"<NSLayoutConstraint:0x10ccf24e0 UIStatusBar:0x102922200.height == 20 (active)>",
"<NSLayoutConstraint:0x10ccf2bf0 UIView:0x10cce7e10.top == _UIBackdropView:0x108d59fb0.top + 40 (active)>",
"<NSLayoutConstraint:0x10ccf26e0 V:[UIStatusBar:0x102922200]-(0)-[UIView:0x10cce7e10] (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x10ccf26e0 V:[UIStatusBar:0x102922200]-(0)-[UIView:0x10cce7e10] (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2018-11-01 15:09:00.687662+1300 Main[2000:481106] [] <<<< AVOutputDeviceDiscoverySession (FigRouteDiscoverer) >>>> -[AVFigRouteDiscovererOutputDeviceDiscoverySessionImpl outputDeviceDiscoverySessionDidChangeDiscoveryMode:]: Setting device discovery mode to DiscoveryMode_None (client: Main)
Android上的一切都正常工作。
编辑:
重构代码以使用文件URL而不是输入流,但在iOS上仍然存在相同的错误
编辑:
这里有一个非常简单的测试用例来说明这个问题;
public class MyApplication {
private Form current;
private Resources theme;
private Media video;
public void init(Object context) {
// use two network threads instead of one
updateNetworkThreadCount(2);
theme = UIManager.initFirstTheme("/theme");
// Enable Toolbar on all Forms by default
Toolbar.setGlobalToolbar(true);
// Pro only feature
Log.bindCrashProtection(true);
addNetworkErrorListener(err -> {
// prevent the event from propagating
err.consume();
if(err.getError() != null) {
Log.e(err.getError());
}
Log.sendLogAsync();
Dialog.show("Connection Error", "There was a networking error in the connection to " + err.getConnectionRequest().getUrl(), "OK", null);
});
}
public void start() {
if(current != null){
current.show();
return;
}
Form hi = new Form("Hi World", BoxLayout.y());
//hi.add(new Label("Hi World"));
Button play = new Button("Play");
play.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
playVideo();
}
});
hi.add(play);
hi.show();
}
private void playVideo() {
try {
String path = getPath();
video = MediaManager.createMedia(path, true, null);
video.setFullScreen(true);
video.setNativePlayerMode(true);
video.prepare();
video.play();
} catch (IOException ex) {
Log.e(ex);
}
}
private String getPath() {
return "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4";
}
public void stop() {
current = getCurrentForm();
if(current instanceof Dialog) {
((Dialog)current).dispose();
current = getCurrentForm();
}
}
public void destroy() {
}
}
注意:要在ios上运行此操作,需要将安全异常添加到plistInject构建提示中。将其添加到codenameone\u设置中。属性文件;
codename1.arg.ios.plistInject=<key>UIRequiresFullScreen</key><true/><key>ITSAppUsesNonExemptEncryption</key><false/><key>NSAppTransportSecurity</key><dict><key>NSExceptionDomains</key><dict><key>commondatastorage.googleapis.com</key><dict><key>NSIncludesSubdomains</key><true/><key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key><true/></dict></dict></dict>
使用输入流进行查找可能有点问题,因为在与本机层通信时,我们无法在流中有效地倒带/跳过。这就是为什么我们总是建议使用接受URL作为参数的版本。您可以使用一个文件URL,该URL应该适用于所有平台。
我正在编写一个使用ChessClock类的游戏应用程序。这两个运动员每人都有一个钟。时钟每十分之一秒向自己发送一个信息流,如果运行,则减少剩余时间。当时间到期时,时钟会调用父视图组中的一个方法,该方法会停止时钟并设置一个标志,该标志会导致忽略进一步的触摸事件,从而用户无法再移动工件。我正在用kotlin写作,但我认为java程序员也会明白这一点: 这可以正常工作,但是如果用户按下后退按钮然后开始一
我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检
多亏了这里有用的回复,我的图形用户界面达到了我想要的效果-- 这是GUI,这是添加了ActionListener的当前代码: 我读过一些关于使用JOptionPane的文章,但显然这并没有给我想要的灵活性,因为我不仅想要按钮,还想要两个标签和文本区域。 基本上,我想做的是: 我希望执行停止,直到我选择按下Button1或Button2。我不想做等待(),因为这可能是糟糕的性能。 谢谢你的帮助!
我正在使用android导航组件库。我用导航图设置了两个片段。我想在我的片段内按下后退按钮时做一些额外的动作。 我使用这段代码来处理工具栏上的按钮点击,但我也想处理后退按钮按下。我该怎么做?
问题内容: 我是编程的初学者,并开始学习Swift,以制作一款有趣的钢琴应用。 按下按钮时我无法播放声音。我已经搜索了一些网站,但是我还是个初学者,无法理解… http://www.tmroyal.com/playing-sounds-in-swift-avaudioplayer.html http://www.rockhoppertech.com/blog/swift- avfoundation
我在这件事上完全被难住了。我有一个活动C,当我试着按下后退按钮时,它工作了。但是,当我使用操作栏中的home/up按钮时,它就会崩溃(请参见下面的错误)。下面是我的代码中处理备份/备份按钮的部分。 活动C: 错误: 这是否与到达活动C有两种可能的方式有关?要么是-