use of com.codename1.components.MediaPlayer in project CodenameOne by codenameone.
the class PreviewInSimulator method main.
/**
* Called back from simulateDeviceActionPerformed to show the simulator skin
*/
public static void main(String[] argv) {
com.codename1.ui.Display.init(new Runnable() {
public void run() {
try {
Preferences pref = Preferences.userNodeForPackage(PreviewInSimulator.class);
String theme = pref.get("previewTheme", null);
File resFile = new File(pref.get("previewResource", null));
String baseResDir = pref.get("baseResourceDir", null);
if (baseResDir != null) {
JavaSEPort.setBaseResourceDir(new File(baseResDir));
}
String selection = pref.get("previewSelection", null);
Resources res = Resources.open(new FileInputStream(resFile));
if (theme == null || theme.length() == 0) {
if (com.codename1.ui.Display.getInstance().hasNativeTheme()) {
com.codename1.ui.Display.getInstance().installNativeTheme();
}
} else {
com.codename1.ui.plaf.UIManager.getInstance().setThemeProps(res.getTheme(theme));
}
com.codename1.ui.util.UIBuilder.registerCustomComponent("Table", com.codename1.ui.table.Table.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("MediaPlayer", com.codename1.components.MediaPlayer.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("ContainerList", com.codename1.ui.list.ContainerList.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("ComponentGroup", com.codename1.ui.ComponentGroup.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("Tree", com.codename1.ui.tree.Tree.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("HTMLComponent", com.codename1.ui.html.HTMLComponent.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("RSSReader", com.codename1.components.RSSReader.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("FileTree", com.codename1.components.FileTree.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("WebBrowser", com.codename1.components.WebBrowser.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("NumericSpinner", com.codename1.ui.spinner.NumericSpinner.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("DateSpinner", com.codename1.ui.spinner.DateSpinner.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("TimeSpinner", com.codename1.ui.spinner.TimeSpinner.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("DateTimeSpinner", com.codename1.ui.spinner.DateTimeSpinner.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("GenericSpinner", com.codename1.ui.spinner.GenericSpinner.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("LikeButton", com.codename1.facebook.ui.LikeButton.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("InfiniteProgress", com.codename1.components.InfiniteProgress.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("MultiButton", com.codename1.components.MultiButton.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("SpanButton", com.codename1.components.SpanButton.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("SpanLabel", com.codename1.components.SpanLabel.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("Ads", com.codename1.components.Ads.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("MapComponent", com.codename1.maps.MapComponent.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("MultiList", com.codename1.ui.list.MultiList.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("ShareButton", com.codename1.components.ShareButton.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("OnOffSwitch", com.codename1.components.OnOffSwitch.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("ImageViewer", com.codename1.components.ImageViewer.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("AutoCompleteTextField", com.codename1.ui.AutoCompleteTextField.class);
com.codename1.ui.util.UIBuilder.registerCustomComponent("Picker", com.codename1.ui.spinner.Picker.class);
com.codename1.ui.util.UIBuilder builder = new com.codename1.ui.util.UIBuilder();
com.codename1.ui.Container c = builder.createContainer(res, selection);
if (c instanceof com.codename1.ui.Form) {
((com.codename1.ui.Form) c).refreshTheme();
if (c instanceof com.codename1.ui.Dialog) {
((com.codename1.ui.Dialog) c).showModeless();
} else {
((com.codename1.ui.Form) c).show();
}
} else {
com.codename1.ui.Form f = new com.codename1.ui.Form();
f.setLayout(new com.codename1.ui.layouts.BorderLayout());
f.addComponent(com.codename1.ui.layouts.BorderLayout.CENTER, c);
f.refreshTheme();
f.show();
}
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "Error While Running In Simulator: " + ex, "Error", JOptionPane.ERROR_MESSAGE);
}
}
});
}
use of com.codename1.components.MediaPlayer in project CodenameOne by codenameone.
the class VideoTransition method start.
public void start() {
if (current != null) {
current.show();
return;
}
Form hi = new Form("Hi World", new BorderLayout());
Button swap = new Button("Swap");
Container theCnt = new Container(new LayeredLayout());
Label imageLabel = new Label();
$(imageLabel).selectAllStyles().setBgColor(0).setBgTransparency(255);
MediaPlayer mediaPlayer = new MediaPlayer();
$(mediaPlayer).selectAllStyles().setBgColor(0).setBgTransparency(255);
swap.addActionListener(e -> {
if (image == null) {
image = Util.downloadImageToStorage("https://www.codenameone.com/img/uber-skin.png", "uber-skin.png").get();
imageLabel.setIcon(image.scaled(CN.getDisplayWidth(), CN.getDisplayHeight()));
}
if (!mediaLoaded) {
try {
mediaPlayer.setDataSource("https://upload.wikimedia.org/wikipedia/commons/b/b3/Big_Buck_Bunny_Trailer_400p.ogv", null);
} catch (IOException ex) {
Log.e(ex);
}
mediaLoaded = true;
}
if (theCnt.getComponentCount() == 0) {
theCnt.add(mediaPlayer);
mediaPlayer.getMedia().play();
hi.revalidateWithAnimationSafety();
} else if (theCnt.contains(mediaPlayer) && !theCnt.contains(imageLabel)) {
imageLabel.getAllStyles().setOpacity(0);
imageLabel.getAllStyles().setBgTransparency(0);
theCnt.add(imageLabel);
theCnt.revalidateWithAnimationSafety();
fadeIn(imageLabel, 500).ready(res -> {
mediaPlayer.getMedia().pause();
mediaPlayer.remove();
hi.revalidateWithAnimationSafety();
});
} else if (theCnt.contains(imageLabel) && !theCnt.contains(mediaPlayer)) {
theCnt.addComponent(0, mediaPlayer);
mediaPlayer.getMedia().play();
fadeOut(imageLabel, 500).ready(res -> {
imageLabel.remove();
theCnt.revalidateWithAnimationSafety();
});
}
});
hi.add(BorderLayout.NORTH, swap);
hi.add(BorderLayout.CENTER, theCnt);
hi.show();
}
use of com.codename1.components.MediaPlayer in project CodenameOne by codenameone.
the class VideoPlayerSample method playVideo.
private void playVideo(Form parent, String videoUrl) {
Form player = new Form(new BorderLayout());
player.getToolbar().setBackCommand("", e -> {
if (mp != null) {
mp.getMedia().cleanup();
}
parent.showBack();
});
player.add(CENTER, new InfiniteProgress());
scheduleBackgroundTask(() -> {
try {
Media video = MediaManager.createMedia(videoUrl, true, () -> parent.showBack());
video.prepare();
callSerially(() -> {
if (mp != null) {
mp.getMedia().cleanup();
}
mp = new MediaPlayer(video);
mp.setAutoplay(true);
player.removeAll();
player.add(CENTER, mp);
player.revalidate();
});
} catch (IOException err) {
Log.e(err);
ToastBar.showErrorMessage("Error loading video: " + err);
}
});
player.show();
}
use of com.codename1.components.MediaPlayer in project CodenameOne by codenameone.
the class AndroidImplementation method createMedia.
/**
* @inheritDoc
*/
@Override
public Media createMedia(final String uri, boolean isVideo, final Runnable onCompletion) throws IOException {
if (getActivity() == null) {
return null;
}
if (!uri.startsWith(FileSystemStorage.getInstance().getAppHomePath())) {
if (!checkForPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, "This is required to play media")) {
return null;
}
}
if (uri.startsWith("file://")) {
return createMedia(removeFilePrefix(uri), isVideo, onCompletion);
}
File file = null;
if (uri.indexOf(':') < 0) {
// use a file object to play to try and workaround this issue:
// http://code.google.com/p/android/issues/detail?id=4124
file = new File(uri);
}
Media retVal;
if (isVideo) {
final AndroidImplementation.Video[] video = new AndroidImplementation.Video[1];
final boolean[] flag = new boolean[1];
final File f = file;
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
VideoView v = new VideoView(getActivity());
v.setZOrderMediaOverlay(true);
if (f != null) {
v.setVideoURI(Uri.fromFile(f));
} else {
v.setVideoURI(Uri.parse(uri));
}
video[0] = new AndroidImplementation.Video(v, getActivity(), onCompletion);
flag[0] = true;
synchronized (flag) {
flag.notify();
}
}
});
while (!flag[0]) {
synchronized (flag) {
try {
flag.wait(100);
} catch (InterruptedException ex) {
}
}
}
return video[0];
} else {
MediaPlayer player;
if (file != null) {
FileInputStream is = new FileInputStream(file);
player = new MediaPlayer();
player.setDataSource(is.getFD());
player.prepare();
} else {
player = MediaPlayer.create(getActivity(), Uri.parse(uri));
}
retVal = new Audio(getActivity(), player, null, onCompletion);
}
return retVal;
}
use of com.codename1.components.MediaPlayer in project CodenameOne by codenameone.
the class AndroidImplementation method createMedia.
/**
* @inheritDoc
*/
@Override
public Media createMedia(InputStream stream, String mimeType, final Runnable onCompletion) throws IOException {
if (getActivity() == null) {
return null;
}
/*if(!checkForPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, "This is required to play media")){
return null;
}*/
boolean isVideo = mimeType.contains("video");
if (!isVideo && stream instanceof FileInputStream) {
MediaPlayer player = new MediaPlayer();
player.setDataSource(((FileInputStream) stream).getFD());
player.prepare();
return new Audio(getActivity(), player, stream, onCompletion);
}
String extension = MimeTypeMap.getFileExtensionFromUrl(mimeType);
final File temp = File.createTempFile("mtmp", extension == null ? "dat" : extension);
temp.deleteOnExit();
OutputStream out = createFileOuputStream(temp);
byte[] buf = new byte[256];
int len = 0;
while ((len = stream.read(buf, 0, buf.length)) > -1) {
out.write(buf, 0, len);
}
out.close();
stream.close();
final Runnable finish = new Runnable() {
@Override
public void run() {
if (onCompletion != null) {
Display.getInstance().callSerially(onCompletion);
// makes sure the file is only deleted after the onCompletion was invoked
Display.getInstance().callSerially(new Runnable() {
@Override
public void run() {
temp.delete();
}
});
return;
}
temp.delete();
}
};
if (isVideo) {
final AndroidImplementation.Video[] retVal = new AndroidImplementation.Video[1];
final boolean[] flag = new boolean[1];
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
VideoView v = new VideoView(getActivity());
v.setZOrderMediaOverlay(true);
v.setVideoURI(Uri.fromFile(temp));
retVal[0] = new AndroidImplementation.Video(v, getActivity(), finish);
flag[0] = true;
synchronized (flag) {
flag.notify();
}
}
});
while (!flag[0]) {
synchronized (flag) {
try {
flag.wait(100);
} catch (InterruptedException ex) {
}
}
}
return retVal[0];
} else {
return createMedia(createFileInputStream(temp), mimeType, finish);
}
}
Aggregations