1 package ai.suanzi.rtmpclient;
3 import android.app.Service;
4 import android.content.Intent;
5 import android.os.Handler;
6 import android.os.HandlerThread;
7 import android.os.IBinder;
8 import android.os.Looper;
9 import android.util.Log;
10 import android.widget.Toast;
11 import android.support.v4.app.NotificationCompat;
12 import android.graphics.BitmapFactory;
13 import android.app.Notification;
14 import android.os.Message;
15 import org.apache.log4j.Level;
16 import org.apache.log4j.Logger;
18 public class MyService extends Service {
20 private Logger gLogger = Logger.getLogger("MyService");
22 private Ffmpeg ffmpeg = Ffmpeg.getInstance();
23 private Boolean isRunning = false;
24 private FfmpegRunnable runnable;
26 private class FfmpegRunnable implements Runnable {
28 public FfmpegRunnable(String _url){
33 gLogger.error("Run Ffmpeg url: " + url);
35 ffmpeg.push(null, this.url);
39 private static final int NOTIFICATION_DOWNLOAD_PROGRESS_ID = 0x0001; //id不可设置为0,否则不能设置为前台service
40 public void createNotification(){
41 gLogger.error("createNotification");
42 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); //使用兼容版本
43 builder.setSmallIcon(R.mipmap.ic_launcher); //设置状态栏的通知图标
44 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher_background)); //设置通知栏横条的图标
45 builder.setAutoCancel(false); //禁止用户点击删除按钮删除
46 builder.setOngoing(true); //禁止滑动删除
47 builder.setShowWhen(true); //右上角的时间显示
48 builder.setContentTitle("Rtmp Foreground Service!!!"); //设置通知栏的标题内容
49 Notification notification = builder.build(); //创建通知
50 startForeground(NOTIFICATION_DOWNLOAD_PROGRESS_ID,notification); //设置为前台服务
54 public IBinder onBind(Intent intent) {
59 public void onCreate() {
61 gLogger.error("onCreate");
65 public void onDestroy() {
67 Toast.makeText(this, "MyService Stopped", Toast.LENGTH_LONG).show();
68 gLogger.error( "onDestroy");
74 public void onStart(Intent intent, int startid){
75 super.onStart(intent, startid);
76 gLogger.error("onStart");
81 public int onStartCommand(Intent intent, int flags, int startId) {
82 String url = intent.getExtras().getString("url");
83 gLogger.error("onStartCommand: url is:" + url + ". isRunning: " + isRunning);
84 runnable = new FfmpegRunnable(url);
87 Toast.makeText(this, "Video stream pushed to " + url, Toast.LENGTH_LONG).show();
88 new Thread(runnable).start();
94 public void onLowMemory(){
96 gLogger.error("onLowMemory");