首先在.h里定义好自己的线程类
namespace android {
class mattThread : public Thread {
public:
I3AControls *mattControls;
bool mattflag;
mattThread(I3AControls *P);
void stopThread();
void startThread();
virtual bool threadLoop();
};
然后在cpp文件里实现类的成员方法
mattThread::mattThread(I3AControls *P):Thread(false)
{
mattControls=P;
mattflag=false;
}
bool mattThread:: threadLoop()
{
int i;
AwbMode myMode[11] = {
CAM_AWB_MODE_NOT_SET ,//6455
CAM_AWB_MODE_AUTO,
CAM_AWB_MODE_MANUAL_INPUT,
CAM_AWB_MODE_DAYLIGHT,
CAM_AWB_MODE_SUNSET,
CAM_AWB_MODE_CLOUDY,
CAM_AWB_MODE_TUNGSTEN,
CAM_AWB_MODE_FLUORESCENT,
CAM_AWB_MODE_WARM_FLUORESCENT,
CAM_AWB_MODE_SHADOW,
CAM_AWB_MODE_WARM_INCANDESCENT,
};
for(i = 0; i < 11; i++){
mattControls->setAwbMode(myMode[i]);
usleep(500000);
if(!mattflag)
break;
}
return mattflag;
}
//matt
在别的地方控制这个线程的启动和初始化
mmattThread(NULL)//init matt 建立指针并赋值
mmattThread = new mattThread(m3AControls);//according to 394
if(mmattThread != NULL)
{
mmattThread.clear();
}
String8 newScene = paramsReturnNewIfChanged(oldParams, newParams, CameraParameters::KEY_SCENE_MODE);
if (!newScene.isEmpty() && mThreadRunning) {
if(newScene==CameraParameters::SCENE_MODE_AUTO)
{
if(mmattThread->mattflag)
{
mmattThread->mattflag=false;
}
}
else
{
if(!(mmattThread->mattflag))
{
mmattThread->mattflag=true;
status = mmattThread->run("mattThread");
if (status != NO_ERROR) {
LOGW("Error Starting mattThread!");
if(mmattThread != NULL)
{
mmattThread.clear();
}
}
}
}//matt*/