package com.yydcdut.note.service; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.os.RemoteException; import com.yydcdut.note.ICameraData; import com.yydcdut.note.NoteApplication; import com.yydcdut.note.injector.component.DaggerServiceComponent; import com.yydcdut.note.injector.module.ServiceModule; import com.yydcdut.note.presenters.IPresenter; import com.yydcdut.note.presenters.service.impl.CameraServicePresenterImpl; import com.yydcdut.note.utils.Const; import com.yydcdut.note.utils.YLog; import com.yydcdut.note.views.service.ICameraServiceView; import javax.inject.Inject; /** * Created by yuyidong on 15/7/17. */ public class CameraService extends Service implements ICameraServiceView { private static final String TAG = CameraService.class.getSimpleName(); @Inject CameraServicePresenterImpl mCameraServicePresenter; @Override public void onCreate() { super.onCreate(); DaggerServiceComponent.builder() .serviceModule(new ServiceModule(this)) .applicationComponent(((NoteApplication) getApplication()).getApplicationComponent()) .build() .inject(this); mCameraServicePresenter.attachView(this); registerReceiver(mKillSelfReceiver, new IntentFilter(Const.BROADCAST_CAMERA_SERVICE_KILL)); } @Override public IBinder onBind(Intent intent) { return mStub; } @Override public void onRebind(Intent intent) { super.onRebind(intent); } @Override public boolean onUnbind(Intent intent) { mCameraServicePresenter.stopThread(); return true; } @Override public void onDestroy() { unregisterReceiver(mKillSelfReceiver); super.onDestroy(); } /** * 加添到Service之后,添加到数据库中,作图,作图完成的话就从数据库中删除 */ ICameraData.Stub mStub = new ICameraData.Stub() { @Override public void add(String fileName, int size, String cameraId, long time, int categoryId, boolean isMirror, int ratio, int orientation, String latitude, String lontitude, int whiteBalance, int flash, int imageLength, int imageWidth, String make, String model, int imageFormat) throws RemoteException { mCameraServicePresenter.add2DB(fileName, size, cameraId, time, categoryId, isMirror, ratio, orientation, latitude, lontitude, whiteBalance, flash, imageLength, imageWidth, make, model, imageFormat); YLog.i("yuyidong", "Thread-->" + Thread.currentThread().getName()); } }; @Override public void sendBroadCast() { /* * 发送广播到外面Album去更新界面 */ Intent intent = new Intent(); //因为是另外个进程,所以.... intent.putExtra(Const.TARGET_BROADCAST_PROCESS, true); intent.setAction(Const.BROADCAST_PHOTONOTE_UPDATE); sendBroadcast(intent);//这里会进行更新处理 } /** * 因为unBind返回的是true * 所以退出程序的是Service不一定关闭了 * 所以写个广播来判断 */ private BroadcastReceiver mKillSelfReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { CameraService.this.stopSelf(); } }; @Override public IPresenter getPresenter() { return mCameraServicePresenter; } }