java实现连拍_[FAQ10059] 在连拍过程中松开拍照键连拍不停止 Download

[FAQ10059] 在连拍过程中松开拍照键连拍不停止 Download

Platform:MT6589MT6572MT6582

Branch:JB2JB3JB5

FAQ Content

[DESCRIPTION]

进入camera长按拍照进行连拍,概率性出现松开拍照键连拍不停止的问题,可以按以下方法修改。

此问题属于performance问题,eng版本比user版本会多做一些mtklog等其他的操作,本身loading就比较重,所以performance相对来讲会差一些,建议修改后在user版本上进行测试。

[SOLUTION]

1、在InputDispatcher.cpp中做如下修改:

void InputDispatcher::notifyMotion(const NotifyMotionArgs* args) {

#if DEBUG_INBOUND_EVENT_DETAILS

ALOGD("notifyMotion - eventTime=%lld, deviceId=%d, source=0x%x, policyFlags=0x%x, "

"action=0x%x, flags=0x%x, metaState=0x%x, buttonState=0x%x, edgeFlags=0x%x, "

"xPrecision=%f, yPrecision=%f, downTime=%lld",

args->eventTime, args->deviceId, args->source, args->policyFlags,

args->action, args->flags, args->metaState, args->buttonState,

args->edgeFlags, args->xPrecision, args->yPrecision, args->downTime);

for (uint32_t i = 0; i < args->pointerCount; i++) {

ALOGD("  Pointer %d: id=%d, toolType=%d, "

"x=%f, y=%f, pressure=%f, size=%f, "

"touchMajor=%f, touchMinor=%f, toolMajor=%f, toolMinor=%f, "

"orientation=%f",

i, args->pointerProperties[i].id,

args->pointerProperties[i].toolType,

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_X),

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_Y),

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_PRESSURE),

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_SIZE),

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_TOUCH_MAJOR),

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_TOUCH_MINOR),

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_TOOL_MAJOR),

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_TOOL_MINOR),

args->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_ORIENTATION));

}

#endif

//add start

bool isEmpty = mInboundQueue.isEmpty();

if (!isEmpty)

{

EventEntry *tail = static_cast(mInboundQueue.tail);

if (tail != NULL && tail->type == EventEntry::TYPE_MOTION )

{

MotionEntry* tailEntry = static_cast(tail);

if (tailEntry->action == args->action

&& tailEntry->downTime == args->downTime

&& tailEntry->pointerCoords[0].getAxisValue(AMOTION_EVENT_AXIS_X) == args->pointerCoords[0].getAxisValue(AMOTION_EVENT_AXIS_X)

&& tailEntry->pointerCoords[0].getAxisValue(AMOTION_EVENT_AXIS_Y) == args->pointerCoords[0].getAxisValue(AMOTION_EVENT_AXIS_Y)

)

{

ALOGD("MTK debug notifyMotion drop motion event because of same x and y, action =0x%x ",args->action);

return;

}

}

}

ALOGD("MTK debug notifyMotion not drop ");

//add end

if (!validateMotionEvent(args->action, args->pointerCount, args->pointerProperties)) {

return;

}

。。。。

2、 在orientationManager.java中添加以下两个函数:

public void enableOrientationManager(){

mOrientationListener.enable();

}

public void disableOrientationManager(){

mOrientationListener.disable();

}

3、 在AbstractGalleryActivity.java中添加以下两个函数:

public void enableOrientationManager(){

mOrientationManager.enableOrientationManager();

}

public void disableOrientationManager(){

mOrientationManager.disableOrientationManager();

}

4、在apps/Camera/src/com/android/camera/Camera.java中添加如下代码:

public void enableOrientationListener() {

mOrientationListener.enable();

}

public void disableOrientationListener() {

mOrientationListener.disable();

}

@Override

public void enableOrientationManager(){

super.enableOrientationManager();

}

@Override

public void disableOrientationManager(){

super.disableOrientationManager();

}

5、在apps/Camera/src/com/android/camera/actor/PhotoActor.java中:

5.1、在onBurstSaveDone()中做如下修改:

public void onBurstSaveDone() {

if (!mCameraClosed && !mCamera.isImageCaptureIntent()) {

mCamera.cancelContinuousShot();

restartPreview(false);

}

//add start

mCamera.enableOrientationListener();

mCamera.enableOrientationManager();

//add end

mSavingPictures = false;

}

5.2、在onShutterButtonLongPressed()中做如下修改:

mMemoryManager.initMemory();

mContinuousShotPerformed = true;

mCurrentShotsNum = 0;

//add start

mCamera.disableOrientationListener();

mCamera.disableOrientationManager();

//add end

mCamera.applyContinousShot();

mCamera.getThumbnailManager().setRefreshInterval(THUMBNAIL_REFRESH_CONTINUOUS);

mCamera.getFocusManager().clearFocusOnContinuous();

mCamera.getFocusManager().doSnap();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值