new OneCamera.PictureSaverCallback() {
@Override
public void onRemoteThumbnailAvailable(final byte[] jpegImage) {
- mMainHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
mAppController.getServices().getRemoteShutterListener()
public void onThumbnailAvailable(final Bitmap thumbnailBitmap, final int rotation) {
// Call ripple effect when you know that you have the bitmap
// then update bitmap.
- mMainHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
mAppController.getCameraAppUI().startCaptureIndicatorRevealAnimation(
/** Whether the module is paused right now. */
private boolean mPaused;
- /** Main thread handler. */
- private Handler mMainHandler;
+ /** Main thread. */
+ private final MainThread mMainThread;
/** Handler thread for camera-related operations. */
private Handler mCameraHandler;
public CaptureModule(AppController appController, boolean stickyHdr) {
super(appController);
mPaused = true;
+ mMainThread = MainThread.create();
mAppController = appController;
mContext = mAppController.getAndroidContext();
mSettingsManager = mAppController.getSettingsManager();
@Override
public void init(CameraActivity activity, boolean isSecureCamera, boolean isCaptureIntent) {
Log.d(TAG, "init");
- mMainHandler = new Handler(activity.getMainLooper());
HandlerThread thread = new HandlerThread("CaptureModule.mCameraHandler");
thread.start();
mCameraHandler = new Handler(thread.getLooper());
mSoundPlayer = new SoundPlayer(mContext);
FocusSound focusSound = new FocusSound(mSoundPlayer, R.raw.material_camera_focus);
- mFocusController = new FocusController(mUI.getFocusRing(), focusSound, mMainHandler);
+ mFocusController = new FocusController(mUI.getFocusRing(), focusSound, mMainThread);
// Set the preview texture from UI for the SurfaceTextureConsumer.
mBurstController.setSurfaceTexture(
@Override
public void onQuickExpose() {
- mMainHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
// Starts the short version of the capture animation UI.
mBurstController.closeFrameDistributor();
mSoundPlayer.unloadSound(R.raw.timer_final_second);
mSoundPlayer.unloadSound(R.raw.timer_increment);
- // Remove delayed resume trigger, if it hasn't been executed yet.
- mMainHandler.removeCallbacksAndMessages(null);
}
@Override
// getting ready to close the camera.
mCameraOpenCloseLock.release();
Log.e(TAG, "Could not set up preview.");
- mMainHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
if (mCamera == null) {
// since we may be blocked in pause(),
// getting ready to close the camera.
mCameraOpenCloseLock.release();
- mMainHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
Log.d(TAG, "Ready for capture.");
// has started.
mUI.initializeZoom(mCamera.getMaxZoom());
mCamera.setFocusStateListener(CaptureModule.this);
- mCamera.setReadyStateChangedListener(CaptureModule.this);
+ mCamera.setReadyStateChangedListener(
+ CaptureModule.this);
}
});
}
package com.android.camera.ui.focus;
-import android.os.Handler;
-
+import com.android.camera.async.MainThread;
import com.android.camera.debug.Log.Tag;
import com.android.camera.one.OneCamera.FocusDistanceListener;
private static final Tag TAG = new Tag("FocusController");
private final FocusRing mFocusRing;
- private final Handler mHandler;
private final FocusSound mFocusSound;
+ private final MainThread mMainThread;
- public FocusController(FocusRing focusRing, FocusSound focusSound, Handler handler) {
+ public FocusController(FocusRing focusRing, FocusSound focusSound, MainThread mainThread) {
mFocusRing = focusRing;
- mHandler = handler;
mFocusSound = focusSound;
+ mMainThread = mainThread;
}
/**
* @param viewY the view's y coordinate
*/
public void showPassiveFocusAt(final int viewX, final int viewY) {
- mHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
mFocusRing.startPassiveFocus();
* @param viewY the view's y coordinate
*/
public void showActiveFocusAt(final int viewX, final int viewY) {
- mHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
mFocusRing.startActiveFocus();
* Stop any currently executing focus animation.
*/
public void clearFocusIndicator() {
- mHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
mFocusRing.stopFocusAnimations();
@Override
public void onFocusDistance(final float diopter, final boolean isActive) {
- mHandler.post(new Runnable() {
+ mMainThread.execute(new Runnable() {
@Override
public void run() {
if (isActive || mFocusRing.isPassiveFocusRunning() ||
- mFocusRing.isActiveFocusRunning()) {
+ mFocusRing.isActiveFocusRunning()) {
mFocusRing.setFocusDiopter(diopter);
}
}