Search in sources :

Example 1 with MediaPlayer

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);
            }
        }
    });
}
Also used : Preferences(java.util.prefs.Preferences) FileInputStream(java.io.FileInputStream) IOException(java.io.IOException) BackingStoreException(java.util.prefs.BackingStoreException) Resources(com.codename1.ui.util.Resources) File(java.io.File)

Example 2 with MediaPlayer

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();
}
Also used : Util(com.codename1.io.Util) Toolbar(com.codename1.ui.Toolbar) BoxLayout(com.codename1.ui.layouts.BoxLayout) Motion(com.codename1.ui.animations.Motion) LayeredLayout(com.codename1.ui.layouts.LayeredLayout) Timer(java.util.Timer) Form(com.codename1.ui.Form) Container(com.codename1.ui.Container) NetworkEvent(com.codename1.io.NetworkEvent) ComponentSelector.$(com.codename1.ui.ComponentSelector.$) Display(com.codename1.ui.Display) Label(com.codename1.ui.Label) Button(com.codename1.ui.Button) Component(com.codename1.ui.Component) CN(com.codename1.ui.CN) AsyncResource(com.codename1.util.AsyncResource) MediaManager(com.codename1.media.MediaManager) MediaPlayer(com.codename1.components.MediaPlayer) Image(com.codename1.ui.Image) Resources(com.codename1.ui.util.Resources) IOException(java.io.IOException) Log(com.codename1.io.Log) BorderLayout(com.codename1.ui.layouts.BorderLayout) Media(com.codename1.media.Media) UIManager(com.codename1.ui.plaf.UIManager) Dialog(com.codename1.ui.Dialog) Container(com.codename1.ui.Container) BorderLayout(com.codename1.ui.layouts.BorderLayout) Form(com.codename1.ui.Form) Button(com.codename1.ui.Button) Label(com.codename1.ui.Label) IOException(java.io.IOException) LayeredLayout(com.codename1.ui.layouts.LayeredLayout) MediaPlayer(com.codename1.components.MediaPlayer)

Example 3 with MediaPlayer

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();
}
Also used : BorderLayout(com.codename1.ui.layouts.BorderLayout) Form(com.codename1.ui.Form) InfiniteProgress(com.codename1.components.InfiniteProgress) Media(com.codename1.media.Media) IOException(java.io.IOException) MediaPlayer(com.codename1.components.MediaPlayer)

Example 4 with MediaPlayer

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;
}
Also used : AsyncMedia(com.codename1.media.AsyncMedia) AbstractMedia(com.codename1.media.AbstractMedia) Media(com.codename1.media.Media) Audio(com.codename1.media.Audio) RandomAccessFile(java.io.RandomAccessFile) File(java.io.File) FileInputStream(java.io.FileInputStream) MediaPlayer(android.media.MediaPlayer)

Example 5 with MediaPlayer

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);
    }
}
Also used : BufferedOutputStream(com.codename1.io.BufferedOutputStream) FileOutputStream(java.io.FileOutputStream) OutputStream(java.io.OutputStream) FileInputStream(java.io.FileInputStream) Paint(android.graphics.Paint) Audio(com.codename1.media.Audio) RandomAccessFile(java.io.RandomAccessFile) File(java.io.File) MediaPlayer(android.media.MediaPlayer)

Aggregations

Media (com.codename1.media.Media)4 Form (com.codename1.ui.Form)4 IOException (java.io.IOException)4 MediaPlayer (com.codename1.components.MediaPlayer)3 BorderLayout (com.codename1.ui.layouts.BorderLayout)3 File (java.io.File)3 FileInputStream (java.io.FileInputStream)3 MediaPlayer (android.media.MediaPlayer)2 Audio (com.codename1.media.Audio)2 Button (com.codename1.ui.Button)2 Container (com.codename1.ui.Container)2 Resources (com.codename1.ui.util.Resources)2 RandomAccessFile (java.io.RandomAccessFile)2 Paint (android.graphics.Paint)1 InfiniteProgress (com.codename1.components.InfiniteProgress)1 BufferedOutputStream (com.codename1.io.BufferedOutputStream)1 Log (com.codename1.io.Log)1 NetworkEvent (com.codename1.io.NetworkEvent)1 Util (com.codename1.io.Util)1 AbstractMedia (com.codename1.media.AbstractMedia)1