在流式传输中使在线广播应用更快

时间:2013-02-21 17:58:07

标签: java android

您好我已经制作了一个广播应用,其中流式传输是通过网络完成的

我的源代码是

当用户点击代码后面的代码将被执行

      if (!NotifyService.iSserviceRunning) {
            new PlayRadio().execute("");
        } 

// AYSNC类用于启动服务并创建进度条

  class PlayRadio extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {
        return "";
    }

    @Override
    protected void onPostExecute(String result) {
        try {
            startService(new Intent(RadioActivity.this, NotifyService.class));
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        try {
            PD = ProgressDialog.show(RadioActivity.this, "Tuning...", "Please Wait...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

//现在服务类将是

   public class NotifyService extends Service {

private static String RADIO_STATION_URL;
public static  MediaPlayer player;
public static boolean iSserviceRunning = false;
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    RADIO_STATION_URL = getResources().getString(R.string.streamurl);
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    initializeMediaPlayer();
    startPlaying();
    iSserviceRunning = true;
}

@Override
public void onDestroy() {
    super.onDestroy();
    nm.cancel(R.string.service_started);
    stopPlaying();
    initializeMediaPlayer();
    iSserviceRunning = false;
}


private void startPlaying() {
    player.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer mp) {
            player.start();

        }
    });
    new PrepareTask().execute();
}

private void stopPlaying() {
    if (player.isPlaying()) {
        player.pause();
        player.release();
    }
}

private void initializeMediaPlayer() {
    player = new MediaPlayer();

    try {
        player.setDataSource(RADIO_STATION_URL);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

private class PrepareTask extends AsyncTask<Integer, Integer, Integer> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    protected void onPostExecute(Integer result) {
        if(RadioActivity.PD!=null){
            if(RadioActivity.PD.isShowing()){
                RadioActivity.PD.dismiss();             
            }
        }
    }

    @Override
    protected Integer doInBackground(Integer... arg0) {
        try {
            player.prepare();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

}

有没有错我正在做因为我的客户说应用程序花了太多时间加载..他告诉我他有很多这样的应用程序正在快速加载然后我的应用程序

任何人都可以建议我在我的代码中做错了所以这需要花费很多时间吗?

0 个答案:

没有答案
相关问题