Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Blackberry中一个接一个地播放音频文件?_Blackberry_Audio_Java Me - Fatal编程技术网

如何在Blackberry中一个接一个地播放音频文件?

如何在Blackberry中一个接一个地播放音频文件?,blackberry,audio,java-me,Blackberry,Audio,Java Me,我设法在Blackberry中创建了一个可以播放音频文件的应用程序,但它只能播放一个文件。我尝试使用for循环来播放一些音频文件 我设法播放了它,但它没有播放音频文件的全部声音,它只播放第一个音频文件和第二个音频文件几秒钟,然后停止播放。播放的文件也会播放彼此重叠的声音,这是不应该发生的 如何在Blackberry中连续播放音频文件的完整声音而不停止 以下是我使用for循环创建的应用程序的代码: package mypackage; import javax.microedition.

我设法在Blackberry中创建了一个可以播放音频文件的应用程序,但它只能播放一个文件。我尝试使用for循环来播放一些音频文件

我设法播放了它,但它没有播放音频文件的全部声音,它只播放第一个音频文件和第二个音频文件几秒钟,然后停止播放。播放的文件也会播放彼此重叠的声音,这是不应该发生的

如何在Blackberry中连续播放音频文件的完整声音而不停止

以下是我使用for循环创建的应用程序的代码:

    package mypackage;

import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import java.lang.Class;
import javax.microedition.rms.RecordStore;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import net.rim.device.api.media.protocol.ByteArrayInputStreamDataSource;
import net.rim.device.api.system.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.extension.container.*;
import net.rim.device.api.ui.UiApplication;
import java.io.IOException;

public class PlayMedia extends UiApplication{
    /**
     * Entry point for application
     * @param args Command line arguments (not used)
     */ 
    public static void main(String[] args){

        PlayMedia theApp = new PlayMedia();
        theApp.enterEventDispatcher();
    }

    public PlayMedia()
    {

        pushScreen(new PlayMediaScreen());


    }
    /**
     * A class extending the MainScreen class, which provides default standard
     * behavior for BlackBerry GUI applications.
     */
    final class PlayMediaScreen extends MainScreen
    {
        /**
         * Creates a new PlayMediaScreen object
         */
        PlayMediaScreen()
        {
            String test1 = "Test(2seconds).mp3";
            String test2 = "Test(2seconds)2.mp3";
            String test3 = "Test(2seconds)3.mp3";
            String test4 = "Test(2seconds)4.mp3";
            String test5 = "blind_willie.mp3";
            String mp3 = null;

            for(int i=0;i<5;i++){
                if(i == 0){
                    mp3 = test1;
                }
                else if(i == 1){
                    mp3 = test2;
                }
                else if(i == 2){
                    mp3 = test3;
                }
                else if(i == 3){
                    mp3 = test4;
                }
                else if(i == 4){
                    mp3 = test5;
                }
                play(mp3);
            }
        }

        private void play(String mp3){

        Player p = null;

        InputStream stream = (InputStream)this.getClass().getResourceAsStream("/" + mp3);

            try {
                //p = Manager.createPlayer(source);
                p = Manager.createPlayer(stream, "audio/mpeg");
                p.realize();
                p.prefetch();

                //testing
                System.out.println("Creating Players!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                System.out.println("The mp3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

                //testing
                System.out.println("IO Exeception!!!!!!!!!!!!!!!!1 " + e);

                //testing 
                System.out.println(p);

            } catch (MediaException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

            //testing
            System.out.println("Media Exeception!!!!!!!!!!!!!!!!1" + e);

            //testing 
            System.out.println(p);
            }
            /*
             * Best practice is to invoke realize(), then prefetch(), then start().
             * Following this sequence reduces delays in starting media playback.
             *
             * Invoking start() as shown below will cause start() to invoke  prefetch(0),
             * which invokes realize() before media playback is started.
             */
            try {
                p.start();
            } catch (MediaException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

                //testing
                System.out.println("Media Exeception for starting!!!!!!!!!!!!!!!!1" + e);

                //testing 
                System.out.println(p);
            }

            /*try {
                p.stop();
            } catch (MediaException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }*/
            //p.deallocate();
            //p.close();



        }
    }
} 
package-mypackage;
导入javax.microedition.media.Manager;
导入javax.microedition.media.MediaException;
导入javax.microedition.media.Player;
导入java.lang.Class;
导入javax.microedition.rms.RecordStore;
导入java.io.InputStream;
导入java.io.ByteArrayInputStream;
导入net.rim.device.api.media.protocol.ByteArrayInputStreamDataSource;
导入net.rim.device.api.system.*;
导入net.rim.device.api.ui.*;
导入net.rim.device.api.ui.component.*;
导入net.rim.device.api.ui.container.main屏幕;
导入net.rim.device.api.ui.extension.container.*;
导入net.rim.device.api.ui.ui应用程序;
导入java.io.IOException;
公共类PlayMedia扩展了UIC应用程序{
/**
*申请的切入点
*@param args命令行参数(未使用)
*/ 
公共静态void main(字符串[]args){
PlayMedia theApp=新的PlayMedia();
theApp.enterEventDispatcher();
}
公共播放媒体()
{
推屏(新的PlayMediaScreen());
}
/**
*扩展MainScreen类的类,该类提供默认标准
*黑莓GUI应用程序的行为。
*/
最终类PlayMediaScreen扩展主屏幕
{
/**
*创建新的PlayMediaScreen对象
*/
PlayMediaScreen()
{
String test1=“Test(2秒).mp3”;
String test2=“Test(2秒)2.mp3”;
String test3=“Test(2秒)3.mp3”;
String test4=“Test(2秒)4.mp3”;
String test5=“blind_willie.mp3”;
字符串mp3=null;
对于(int i=0;i
我设法播放了它,但它没有播放音频文件的全部声音,它只播放了第一个音频文件和第二个音频文件几秒钟,然后停止播放。播放的文件也会播放声音,这是不应该发生的

请仔细阅读
播放器的

简单回放

可以使用管理器的createPlayer方法之一创建播放机。创建播放机后,调用start将尽快开始播放。播放开始时,该方法将返回。播放将在后台继续,并在媒体结束时自动停止

简单的播放示例说明了这一点:

请注意,文档中说
播放开始时,该方法将返回。播放将在后台继续。
。这就是您获得“声音重叠”的原因


要解决此问题,您需要将侦听器附加到播放器
player.addPlayerListener(PlayerListener PlayerListener)
。将从后台“播放”通知侦听器当媒体文件播放到最后时线程。这将是开始下一个媒体文件的新播放的正确时机。请不要期待我的代码,我只是给你一个想法。

最后我得到了它,这是我的代码。:D

package mypackage;

import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;

import java.lang.Class;
import javax.microedition.rms.RecordStore;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import net.rim.device.api.media.protocol.ByteArrayInputStreamDataSource;
import net.rim.device.api.system.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.extension.container.*;
import net.rim.device.api.ui.UiApplication;
import java.io.IOException;

public class PlayMedia extends UiApplication{
    /**
     * Entry point for application
     * @param args Command line arguments (not used)
     */ 
    public static void main(String[] args){

        PlayMedia theApp = new PlayMedia();
        theApp.enterEventDispatcher();
    }

    public PlayMedia()
    {

        pushScreen(new PlayMediaScreen());


    }
    /**
     * A class extending the MainScreen class, which provides default standard
     * behavior for BlackBerry GUI applications.
     */
    final class PlayMediaScreen extends MainScreen implements PlayerListener
    {
        /**
         * Creates a new PlayMediaScreen object
         */
        Player p = null;
        String mp3 = ""; 
        String test1 = "Test2seconds.mp3";
        String test5 = "Test2seconds2.mp3";
        //String test6 = "Test2seconds3.mp3";
        String test4 = "Test2seconds4.mp3";
        String test2 = "blind_willie.mp3";
        String test3 = "blind_willie2.mp3";


        PlayMediaScreen()
        {
            mp3 = test1;
            play(mp3);
        }

        private void play(String mp3){



        InputStream stream = (InputStream)this.getClass().getResourceAsStream("/" + mp3);

            try {
                //p = Manager.createPlayer(source);
                p = Manager.createPlayer(stream,"audio/mpeg");
                p.addPlayerListener(this);
                p.realize();
                p.prefetch();

                //testing
                System.out.println("Creating Players!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                System.out.println("The mp3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

                //testing
                System.out.println("IO Exeception!!!!!!!!!!!!!!!!1 " + e);

                //testing 
                System.out.println(p);

            } catch (MediaException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

            //testing
            System.out.println("Media Exeception!!!!!!!!!!!!!!!!1" + e);

            //testing 
            System.out.println(p);
            }
            /*
             * Best practice is to invoke realize(), then prefetch(), then start().
             * Following this sequence reduces delays in starting media playback.
             *
             * Invoking start() as shown below will cause start() to invoke  prefetch(0),
             * which invokes realize() before media playback is started.
             */
            try {
                p.start();
            } catch (MediaException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

                //testing
                System.out.println("Media Exeception for starting!!!!!!!!!!!!!!!!1" + e);

                //testing 
                System.out.println(p);
            }
            /*
            try {
                p.stop();
            } catch (MediaException e) {
            // TODO Auto-generated catch block
                e.printStackTrace();
            }
            p.deallocate();
            p.close();
            */


        }

        public void playerUpdate(Player player, String event, Object eventData) {
            // TODO Auto-generated method stub
            if (event.equals(PlayerListener.END_OF_MEDIA)) {

                //String mp3 = ""; 

                if( mp3.equals(test1) ) {
                    mp3 = test2;
                    //testing
                    System.out.println("The MP3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                    play(mp3);

                    //testing
                    System.out.println("The MP3 FINISH PLAYING is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                }
                 else if( mp3.equals(test2) ){ 
                     mp3 = test3;
                    //testing
                    System.out.println("The MP3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                    play(mp3);

                    //testing
                    System.out.println("The MP3 FINISH PLAYING is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                 }
                 else if( mp3.equals(test3) ) {
                     mp3 = test4;
                     //testing
                    System.out.println("The MP3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                    play(mp3);

                    //testing
                    System.out.println("The MP3 FINISH PLAYING is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                 }                   
                 else if( mp3.equals(test4) ) {
                     mp3 = test5;
                    //testing
                    System.out.println("The MP3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                    play(mp3);

                    //testing
                    System.out.println("The MP3 FINISH PLAYING is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                 }
                 else if( mp3.equals(test5) ){
                     mp3 = null;
                     try {
                        player.stop();
                    } catch (MediaException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                     player.deallocate();
                     player.close();
                 }

              }
        }
    }
}

有人能帮我吗!!!!我明天就要完成了!嗨,你能给我看一个添加播放器侦听器的示例吗?对不起,我是黑莓新手,所以可能需要一个更具体的示例。我可以播放一个简单的播放,但我不能一个接一个地播放多个音频文件(请帮助!对不起,我没有一个例子,因为我从来没有在我的项目中使用音频播放。现在你被指示做什么以及使用什么BB API,我不认为任何事情仍然可以阻止你成功。哈哈,谢谢。我以前试着放进PlayerListener,但它给我相同的错误。我尝试阅读文档,但我没有真正了解如何使用playerlistener一个接一个地播放音频文件。
package mypackage;

import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;

import java.lang.Class;
import javax.microedition.rms.RecordStore;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import net.rim.device.api.media.protocol.ByteArrayInputStreamDataSource;
import net.rim.device.api.system.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.extension.container.*;
import net.rim.device.api.ui.UiApplication;
import java.io.IOException;

public class PlayMedia extends UiApplication{
    /**
     * Entry point for application
     * @param args Command line arguments (not used)
     */ 
    public static void main(String[] args){

        PlayMedia theApp = new PlayMedia();
        theApp.enterEventDispatcher();
    }

    public PlayMedia()
    {

        pushScreen(new PlayMediaScreen());


    }
    /**
     * A class extending the MainScreen class, which provides default standard
     * behavior for BlackBerry GUI applications.
     */
    final class PlayMediaScreen extends MainScreen implements PlayerListener
    {
        /**
         * Creates a new PlayMediaScreen object
         */
        Player p = null;
        String mp3 = ""; 
        String test1 = "Test2seconds.mp3";
        String test5 = "Test2seconds2.mp3";
        //String test6 = "Test2seconds3.mp3";
        String test4 = "Test2seconds4.mp3";
        String test2 = "blind_willie.mp3";
        String test3 = "blind_willie2.mp3";


        PlayMediaScreen()
        {
            mp3 = test1;
            play(mp3);
        }

        private void play(String mp3){



        InputStream stream = (InputStream)this.getClass().getResourceAsStream("/" + mp3);

            try {
                //p = Manager.createPlayer(source);
                p = Manager.createPlayer(stream,"audio/mpeg");
                p.addPlayerListener(this);
                p.realize();
                p.prefetch();

                //testing
                System.out.println("Creating Players!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                System.out.println("The mp3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

                //testing
                System.out.println("IO Exeception!!!!!!!!!!!!!!!!1 " + e);

                //testing 
                System.out.println(p);

            } catch (MediaException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

            //testing
            System.out.println("Media Exeception!!!!!!!!!!!!!!!!1" + e);

            //testing 
            System.out.println(p);
            }
            /*
             * Best practice is to invoke realize(), then prefetch(), then start().
             * Following this sequence reduces delays in starting media playback.
             *
             * Invoking start() as shown below will cause start() to invoke  prefetch(0),
             * which invokes realize() before media playback is started.
             */
            try {
                p.start();
            } catch (MediaException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

                //testing
                System.out.println("Media Exeception for starting!!!!!!!!!!!!!!!!1" + e);

                //testing 
                System.out.println(p);
            }
            /*
            try {
                p.stop();
            } catch (MediaException e) {
            // TODO Auto-generated catch block
                e.printStackTrace();
            }
            p.deallocate();
            p.close();
            */


        }

        public void playerUpdate(Player player, String event, Object eventData) {
            // TODO Auto-generated method stub
            if (event.equals(PlayerListener.END_OF_MEDIA)) {

                //String mp3 = ""; 

                if( mp3.equals(test1) ) {
                    mp3 = test2;
                    //testing
                    System.out.println("The MP3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                    play(mp3);

                    //testing
                    System.out.println("The MP3 FINISH PLAYING is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                }
                 else if( mp3.equals(test2) ){ 
                     mp3 = test3;
                    //testing
                    System.out.println("The MP3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                    play(mp3);

                    //testing
                    System.out.println("The MP3 FINISH PLAYING is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                 }
                 else if( mp3.equals(test3) ) {
                     mp3 = test4;
                     //testing
                    System.out.println("The MP3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                    play(mp3);

                    //testing
                    System.out.println("The MP3 FINISH PLAYING is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                 }                   
                 else if( mp3.equals(test4) ) {
                     mp3 = test5;
                    //testing
                    System.out.println("The MP3 is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                    play(mp3);

                    //testing
                    System.out.println("The MP3 FINISH PLAYING is " + mp3 + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

                 }
                 else if( mp3.equals(test5) ){
                     mp3 = null;
                     try {
                        player.stop();
                    } catch (MediaException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                     player.deallocate();
                     player.close();
                 }

              }
        }
    }
}