1 /*
2 * Copyright (c) 2020 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "camera_ability_slice.h"
17 #include <algorithm>
18 #include <meta_data.h>
19 #include <window/window.h>
20
21 #include "ability_manager.h"
22 #include "gfx_utils/color.h"
23 #include "ui_config.h"
24 #include "securec.h"
25
26 namespace OHOS {
27 REGISTER_AS(CameraAbilitySlice)
28
29 static constexpr const char *VIEWIMAGE = "/userdata/photo/tmp.jpg";
30 // button idx
31 static uint8_t g_curButtonIdx = 1;
32 // video info
33 static int g_isRecording = 0; // 0--stop recording 1--start/resume recording 2--pause recording
34
35 class SliderAnimator : public Animator, public AnimatorCallback {
36 public:
SliderAnimator(UISlider * slider,UIImageView * backview,UISurfaceView * surface,SampleCameraManager * cManager,uint16_t duration)37 explicit SliderAnimator(UISlider *slider, UIImageView *backview, UISurfaceView *surface,
38 SampleCameraManager *cManager, uint16_t duration)
39 : Animator(this, slider, duration, true), backgroundView_(backview), mSurfaceview(surface),
40 camManager(cManager), ss(0), runType_(0), camRestart(false) {}
~SliderAnimator()41 virtual ~SliderAnimator() {}
42
Callback(UIView * view)43 void Callback(UIView *view) override
44 {
45 if (runType_ == 1) { /* 1 is normal photo */
46 if (camManager->SampleCameraCaptrueIsFinish()) {
47 if (ss == 0) { /* 0 first record times */
48 BackViewSetImage(VIEWIMAGE);
49 backgroundView_->SetVisible(true);
50 backgroundView_->Invalidate();
51 ss = GetRunTime();
52 } else {
53 if ((GetRunTime()-ss) > 1000) { /* 1000 = 1s */
54 backgroundView_->SetVisible(false);
55 backgroundView_->Invalidate();
56 Stop();
57 }
58 }
59 }
60 } else if (runType_ == 2) { /* 2 is record mode */
61 int ms = GetRunTime();
62 if (ss == 0) {
63 ss = GetRunTime();
64 return;
65 }
66 if ((ms - ss) > 1000 && camRestart == false) { /* 1000 = 1s */
67 camManager->SampleCameraStopRecord();
68 printf("after stop record!! \n");
69 printf("before SampleCameraStart!! \n");
70 camManager->SampleCameraStart(mSurfaceview->GetSurface());
71 printf("after SampleCameraStart!! \n");
72 camRestart = true;
73 } else if ((ms - ss) > 2000) { /* 2000 = 2s */
74 backgroundView_->SetVisible(false);
75 backgroundView_->Invalidate();
76 Stop();
77 }
78 }
79 }
80
OnStop(UIView & view)81 void OnStop(UIView &view) override
82 {
83 runType_ = 0;
84 ss = 0;
85 camRestart = false;
86 }
87
SetStart(int type)88 void SetStart(int type)
89 {
90 runType_ = type;
91 camRestart = false;
92 }
93 private:
94 UIImageView *backgroundView_;
95 UISurfaceView *mSurfaceview;
96 SampleCameraManager *camManager;
97 uint32_t ss;
98 uint32_t runType_;
99 bool camRestart;
100
BackViewSetImage(const char * image)101 void BackViewSetImage(const char *image)
102 {
103 backgroundView_->SetSrc(image);
104 int16_t imageWidth = backgroundView_->GetWidth();
105 int16_t imageHeight = backgroundView_->GetHeight();
106 if (imageWidth > SCREEN_WIDTH || imageHeight > SCREEN_HEIGHT) {
107 TransformMap transMap(backgroundView_->GetOrigRect());
108 float scaleWidth = 1.0;
109 float scaleHeight = 1.0;
110 if (imageWidth > SCREEN_WIDTH)
111 scaleWidth = static_cast<float>(SCREEN_WIDTH) / imageWidth;
112 if (imageHeight > SCREEN_HEIGHT)
113 scaleHeight = static_cast<float>(SCREEN_HEIGHT) / imageHeight;
114 #ifdef KEEP_PICTURE_RECT
115 float scale = (scaleWidth < scaleHeight) ? scaleWidth : scaleHeight;
116
117 transMap.Scale(Vector2<float>(scale, scale), Vector2<float>(0, 0));
118 #else
119 transMap.Scale(Vector2<float>(scaleWidth, scaleHeight), Vector2<float>(0, 0));
120 #endif
121 backgroundView_->SetTransformMap(transMap);
122 backgroundView_->SetTransformAlgorithm(TransformAlgorithm::NEAREST_NEIGHBOR);
123 #ifdef KEEP_PICTURE_RECT
124 imageWidth = imageWidth * scale;
125 imageHeight = imageHeight * scale;
126 #else
127 imageWidth = imageWidth * scaleWidth;
128 imageHeight = imageHeight * scaleHeight;
129 #endif
130 }
131 int16_t imagePosX = (SCREEN_WIDTH - imageWidth) / 2; /* 2 half */
132 int16_t imagePosY = (SCREEN_HEIGHT - imageHeight) / 2; /* 2 half */
133 backgroundView_->SetPosition(imagePosX, imagePosY);
134 }
135 };
136
137 class CameraImageButtonOnClickListener : public UIView::OnClickListener {
138 public:
CameraImageButtonOnClickListener(UIView * uiView,UISurfaceView * surface,UIImageView * iamgeview,TaskView * taskView,SliderAnimator * animator)139 CameraImageButtonOnClickListener(UIView *uiView, UISurfaceView *surface,
140 UIImageView *iamgeview, TaskView *taskView, SliderAnimator *animator) : uiView_(uiView),
141 backgroundView_(iamgeview), mSurfaceview(surface), animator_(animator), gTaskView_(taskView)
142 {
143 cManager_ = nullptr;
144 bttnLeft = nullptr;
145 bttnRight = nullptr;
146 bttnMidle = nullptr;
147 bttnRecord = nullptr;
148 recordImage = nullptr;
149 tmLabel = nullptr;
150 bttnIdx_ = 0;
151 }
~CameraImageButtonOnClickListener()152 virtual ~CameraImageButtonOnClickListener() {}
153
OnClick(UIView & view,const ClickEvent & event)154 bool OnClick(UIView &view, const ClickEvent &event) override
155 {
156 if (cManager_ == nullptr || tmLabel == nullptr || bttnLeft == nullptr || bttnMidle == nullptr ||
157 bttnRight == nullptr || bttnRecord == nullptr || recordImage == nullptr) {
158 printf("nullptr point!! \n");
159 return false;
160 }
161 switch (bttnIdx_) {
162 case 0: { /* 0 thumb */
163 StartGallery();
164 return true;
165 }
166 break;
167 case 1: /* 1 photo */
168 StartTakePhoto();
169 break;
170 case 2: /* 2 record */
171 RecorderButtonDeal();
172 break;
173 case 3: /* 3 pause/resume */
174 if (g_isRecording == 1) { /* 1 start */
175 g_isRecording = 2; /* 2 pause */
176 gTaskView_->SetPause();
177 bttnRecord->SetSrc(UI_IMAGE_PATH"ic_camera_record_continue.png");
178 } else {
179 bttnRecord->SetSrc(UI_IMAGE_PATH"ic_camera_record_pause.png");
180 g_isRecording = 1; /* 1 start */
181 gTaskView_->SetResume();
182 }
183 bttnRecord->Invalidate();
184 return true;
185 default:
186 return true;
187 }
188
189 if (g_curButtonIdx != 2) { /* 2 is record button */
190 recordImage->SetVisible(false);
191 recordImage->Invalidate();
192
193 tmLabel->SetVisible(false);
194 tmLabel->Invalidate();
195
196 bttnRecord->SetVisible(false);
197 bttnRecord->Invalidate();
198 } else {
199 tmLabel->SetVisible(true);
200 tmLabel->Invalidate();
201 }
202
203 uiView_->Invalidate();
204
205 return true;
206 }
207
208 // idx 0--left, 1--midle, 2--right, 3--record, 4--rview
SetImageView(UIImageView * imgButton,int idx)209 void SetImageView(UIImageView *imgButton, int idx)
210 {
211 if (idx == 0) bttnLeft = imgButton; /* 0 thumb */
212 if (idx == 1) bttnMidle = imgButton; /* 1 photo */
213 if (idx == 2) bttnRight = imgButton; /* 2 record */
214 if (idx == 3) bttnRecord = imgButton; /* 3 pause */
215 if (idx == 4) recordImage = imgButton; /* 4 icon */
216 }
217
SetButtonIdxCamera(SampleCameraManager * cManager,int idx)218 void SetButtonIdxCamera(SampleCameraManager *cManager, int idx)
219 {
220 cManager_ = cManager;
221 bttnIdx_ = idx;
222 }
223
SetLabel(UILabel * l)224 void SetLabel(UILabel *l)
225 {
226 tmLabel = l;
227 }
228
229 private:
230 UIView *uiView_;
231 UIImageView *backgroundView_;
232 UISurfaceView *mSurfaceview;
233 SliderAnimator *animator_;
234 TaskView *gTaskView_;
235 int16_t bttnIdx_;
236
237 SampleCameraManager *cManager_;
238 UIImageView *bttnLeft;
239 UIImageView *bttnRight;
240 UIImageView *bttnMidle;
241 UIImageView *bttnRecord;
242 UIImageView *recordImage;
243 UILabel *tmLabel;
StartGallery(void)244 void StartGallery(void)
245 {
246 Want want1 = { nullptr };
247 ElementName element = { nullptr };
248 SetElementBundleName(&element, "com.huawei.gallery");
249 SetElementAbilityName(&element, "GalleryAbility");
250 SetWantElement(&want1, element);
251 SetWantData(&want1, "WantData", strlen("WantData") + 1);
252 StartAbility(&want1);
253 }
254
StartTakePhoto(void)255 void StartTakePhoto(void)
256 {
257 if (g_curButtonIdx != 1) { /* 1 photo */
258 if (g_isRecording) {
259 return;
260 }
261 g_curButtonIdx = 1;
262 bttnLeft->SetPosition(LEFT_BUTTON_X, LEFT_BUTTON_Y, LEFT_BUTTON_W, LEFT_BUTTON_H);
263 bttnMidle->SetPosition(MID_BUTTON_X, MID_BUTTON_Y, MID_BUTTON_W, MID_BUTTON_H);
264 bttnRight->SetPosition(RIGHT_BUTTON_X, RIGHT_BUTTON_Y, RIGHT_BUTTON_W, RIGHT_BUTTON_H);
265 bttnMidle->SetSrc(UI_IMAGE_PATH"ic_camera_shutter.png");
266 bttnRight->SetSrc(UI_IMAGE_PATH"ic_camera_video.png");
267 } else {
268 cManager_->SampleCameraCaptrue(0);
269 animator_->SetStart(1);
270 animator_->Start();
271 }
272 }
273
RecorderButtonDeal(void)274 void RecorderButtonDeal(void)
275 {
276 if (g_curButtonIdx != 2) { /* 2 record */
277 g_curButtonIdx = 2; /* 2 record */
278 bttnRight->SetPosition(MID_BUTTON_X, MID_BUTTON_Y, MID_BUTTON_W, MID_BUTTON_H);
279 bttnMidle->SetPosition(RIGHT_BUTTON_X, RIGHT_BUTTON_Y, RIGHT_BUTTON_W, RIGHT_BUTTON_H);
280
281 bttnMidle->SetSrc(UI_IMAGE_PATH"ic_camera_record_camra.png");
282 bttnRight->SetSrc(UI_IMAGE_PATH"ic_camera_record.png");
283 } else {
284 if (g_isRecording) {
285 g_isRecording = 0; /* 0 stop */
286 animator_->Stop();
287
288 cManager_->SampleCameraStopRecord();
289 printf("after stop record!! \n");
290 printf("before SampleCameraStart!! \n");
291 cManager_->SampleCameraStart(mSurfaceview->GetSurface());
292 printf("after SampleCameraStart!! \n");
293
294 gTaskView_->SetStop();
295 recordImage->SetVisible(false);
296 recordImage->Invalidate();
297
298 bttnRecord->SetVisible(false);
299 bttnRecord->Invalidate();
300 bttnMidle->SetVisible(true);
301 bttnMidle->Invalidate();
302 bttnLeft->SetVisible(true);
303 bttnLeft->Invalidate();
304
305 bttnRight->SetSrc(UI_IMAGE_PATH"ic_camera_record.png");
306 } else {
307 g_isRecording = 1; /* 1 start */
308 cManager_->SampleCameraCaptrue(1); /* 1 start */
309 cManager_->SampleCameraStartRecord(mSurfaceview->GetSurface());
310
311 recordImage->SetVisible(true);
312 recordImage->Invalidate();
313 bttnMidle->SetVisible(false);
314 bttnMidle->Invalidate();
315 gTaskView_->SetStart();
316 bttnLeft->SetVisible(false);
317 bttnLeft->Invalidate();
318
319 bttnRight->SetSrc(UI_IMAGE_PATH"ic_camera_record_stop.png");
320 }
321 bttnRight->Invalidate();
322 }
323 }
324
BackViewSetImage(const char * image)325 void BackViewSetImage(const char *image)
326 {
327 backgroundView_->SetSrc(image);
328 int16_t imageWidth = backgroundView_->GetWidth();
329 int16_t imageHeight = backgroundView_->GetHeight();
330 if (imageWidth > SCREEN_WIDTH || imageHeight > SCREEN_HEIGHT) {
331 TransformMap transMap(backgroundView_->GetOrigRect());
332 float scaleWidth = 1.0;
333 float scaleHeight = 1.0;
334 if (imageWidth > SCREEN_WIDTH)
335 scaleWidth = static_cast<float>(SCREEN_WIDTH) / imageWidth;
336 if (imageHeight > SCREEN_HEIGHT)
337 scaleHeight = static_cast<float>(SCREEN_HEIGHT) / imageHeight;
338 float scale = (scaleWidth < scaleHeight) ? scaleWidth : scaleHeight;
339
340 transMap.Scale(Vector2<float>(scale, scale), Vector2<float>(0, 0));
341 backgroundView_->SetTransformMap(transMap);
342 backgroundView_->SetTransformAlgorithm(TransformAlgorithm::NEAREST_NEIGHBOR);
343 imageWidth = imageWidth * scale;
344 imageHeight = imageHeight * scale;
345 }
346 int16_t imagePosX = (SCREEN_WIDTH - imageWidth) / 2; /* 2 half */
347 int16_t imagePosY = (SCREEN_HEIGHT - imageHeight) / 2; /* 2 half */
348 backgroundView_->SetPosition(imagePosX, imagePosY);
349 }
350 };
351
~CameraAbilitySlice()352 CameraAbilitySlice::~CameraAbilitySlice()
353 {
354 gTaskView_->SetPause();
355 delete gTaskView_;
356 for (int i = 0; i < BUTTON_NUMS; i++)
357 delete bttnImageClick[i];
358 delete cam_manager;
359 delete backBttn;
360 delete backIcon;
361 delete txtMsgLabel;
362 delete recordImage;
363 delete tmLabel;
364 delete bttnLeft;
365 delete bttnMidle;
366 delete bttnRight;
367 delete bttnRecord;
368 delete scroll;
369 animator_->Stop();
370 delete animator_;
371 delete slider;
372 delete buttonListener_;
373 delete surfaceView;
374 delete background_;
375 }
376
SetHead(void)377 void CameraAbilitySlice::SetHead(void)
378 {
379 backIcon = new UIImageView();
380 backIcon->SetTouchable(true);
381 backIcon->SetSrc(UI_IMAGE_PATH"ic_back.png");
382 backIcon->SetPosition(BACK_LABEL_X, BACK_LABEL_Y, BACK_LABEL_W, BACK_LABEL_H);
383
384 backBttn = new UIImageView();
385 backBttn->SetTouchable(true);
386 backBttn->SetPosition(0, 0, BACK_LABEL_W * 4, BACK_LABEL_H * 4); /* 4 cups of icon size */
387 backBttn->SetStyle(STYLE_BACKGROUND_OPA, 0);
388 auto backBttnonClick = [this](UIView &view, const Event &event) -> bool {
389 printf("############ from launcher enter #############\n");
390 TerminateAbility();
391 printf("############ to launcher #############\n");
392 return true;
393 };
394
395 buttonListener_ = new EventListener(backBttnonClick, nullptr);
396 backBttn->SetOnClickListener(buttonListener_);
397 backIcon->SetOnClickListener(buttonListener_);
398
399 txtMsgLabel = new UILabel();
400 txtMsgLabel->SetPosition(TXT_LABEL_X, TXT_LABEL_Y, TXT_LABEL_W, TXT_LABEL_H);
401 txtMsgLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
402
403 txtMsgLabel->SetFont((const char *)TTF_PATH, FONT_SIZE);
404
405 txtMsgLabel->SetAlign(TEXT_ALIGNMENT_LEFT);
406 txtMsgLabel->SetStyle(STYLE_TEXT_COLOR, Color::ColorTo32(Color::White()));
407 txtMsgLabel->SetStyle(STYLE_BACKGROUND_OPA, 0);
408 txtMsgLabel->SetText((char *)"相机");
409
410 recordImage = new UIImageView();
411 recordImage->SetTouchable(false);
412 recordImage->SetSrc(UI_IMAGE_PATH"ic_timer.png");
413 recordImage->SetPosition(RECORD_IMAGE_X, RECORD_IMAGE_Y, RECORD_IMAGE_W, RECORD_IMAGE_H);
414 recordImage->SetStyle(STYLE_BACKGROUND_OPA, 0);
415
416 tmLabel = new UILabel();
417 tmLabel->SetPosition(TIME_LABEL_X, TIME_LABEL_Y, TIME_LABEL_W, TIME_LABEL_H);
418 tmLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
419 tmLabel->SetText("00:00");
420
421 tmLabel->SetFont((const char *)TTF_PATH, FONT_SIZE);
422
423 tmLabel->SetStyle(STYLE_TEXT_COLOR, Color::ColorTo32(Color::White()));
424 tmLabel->SetStyle(STYLE_BACKGROUND_OPA, 0);
425
426 recordImage->SetVisible(false);
427 recordImage->Invalidate();
428 tmLabel->SetVisible(false);
429 tmLabel->Invalidate();
430 }
431
SetBottom(void)432 void CameraAbilitySlice::SetBottom(void)
433 {
434 scroll = new UIScrollView();
435 scroll->SetStyle(STYLE_BACKGROUND_COLOR, Color::ColorTo32(Color::White()));
436 scroll->SetStyle(STYLE_BACKGROUND_OPA, 0);
437 scroll->SetPosition(SCROLL_VIEW_X, SCROLL_VIEW_Y, SCROLL_VIEW_W, SCROLL_VIEW_H);
438 scroll->SetHorizontalScrollState(true);
439 scroll->SetVerticalScrollState(false);
440 scroll->SetXScrollBarVisible(false);
441 scroll->SetYScrollBarVisible(false);
442
443 bttnLeft = new UIImageView();
444 bttnLeft->SetTouchable(true);
445 bttnLeft->SetPosition(LEFT_BUTTON_X, LEFT_BUTTON_Y, LEFT_BUTTON_W, LEFT_BUTTON_H);
446 bttnLeft->SetSrc(UI_IMAGE_PATH"ic_camera_photo.png");
447 bttnLeft->SetStyle(STYLE_BACKGROUND_OPA, 0);
448
449 bttnMidle = new UIImageView();
450 bttnMidle->SetTouchable(true);
451 bttnMidle->SetSrc(UI_IMAGE_PATH"ic_camera_shutter.png");
452 bttnMidle->SetPosition(MID_BUTTON_X, MID_BUTTON_Y, MID_BUTTON_W, MID_BUTTON_H);
453 bttnMidle->SetStyle(STYLE_BACKGROUND_OPA, 0);
454
455 bttnRight = new UIImageView();
456 bttnRight->SetTouchable(true);
457 bttnRight->SetPosition(RIGHT_BUTTON_X, RIGHT_BUTTON_Y, RIGHT_BUTTON_W, RIGHT_BUTTON_H);
458 bttnRight->SetSrc(UI_IMAGE_PATH"ic_camera_video.png");
459 bttnRight->SetStyle(STYLE_BACKGROUND_OPA, 0);
460
461 bttnRecord = new UIImageView();
462 bttnRecord->SetTouchable(true);
463 bttnRecord->SetPosition(RIGHT_BUTTON_X, RIGHT_BUTTON_Y, RIGHT_BUTTON_W, RIGHT_BUTTON_H);
464 bttnRecord->SetSrc(UI_IMAGE_PATH"ic_camera_record_pause.png");
465 bttnRecord->SetStyle(STYLE_BACKGROUND_OPA, 0);
466 bttnRecord->SetVisible(false);
467 bttnRecord->Invalidate();
468
469 slider = new UISlider();
470 slider->SetPosition(-1, -1, 1, 1);
471
472 gTaskView_ = new TaskView(tmLabel);
473 gTaskView_->TaskStart();
474
475 animator_ = new SliderAnimator(slider, background_, surfaceView, cam_manager, 10000); /* 10000 = 10s */
476
477 UIImageView *imageV[BUTTON_NUMS] = {bttnLeft, bttnMidle, bttnRight, bttnRecord};
478 for (int i = 0; i < BUTTON_NUMS; i++) {
479 bttnImageClick[i] =
480 new CameraImageButtonOnClickListener((UIView *)scroll, surfaceView, background_, gTaskView_,
481 (SliderAnimator*)animator_);
482 ((CameraImageButtonOnClickListener *)bttnImageClick[i])->SetButtonIdxCamera(cam_manager, i);
483 ((CameraImageButtonOnClickListener *)bttnImageClick[i])->SetLabel(tmLabel);
484 ((CameraImageButtonOnClickListener *)bttnImageClick[i])->SetImageView(bttnLeft, 0); /* 0 */
485 ((CameraImageButtonOnClickListener *)bttnImageClick[i])->SetImageView(bttnMidle, 1); /* 1 */
486 ((CameraImageButtonOnClickListener *)bttnImageClick[i])->SetImageView(bttnRight, 2); /* 2 */
487 ((CameraImageButtonOnClickListener *)bttnImageClick[i])->SetImageView(bttnRecord, 3); /* 3 */
488 ((CameraImageButtonOnClickListener *)bttnImageClick[i])->SetImageView(recordImage, 4); /* 4 */
489 imageV[i]->SetOnClickListener(bttnImageClick[i]);
490 }
491 }
492
OnStart(const Want & want)493 void CameraAbilitySlice::OnStart(const Want &want)
494 {
495 AbilitySlice::OnStart(want);
496 printf("CameraAbilitySlice onstart \n");
497
498 surfaceView = new UISurfaceView();
499 surfaceView->SetPosition(V_GROUP_X, V_GROUP_Y, V_GROUP_W, V_GROUP_H);
500 surfaceView->GetSurface()->SetWidthAndHeight(IMAGE_WIDTH, IMAGE_HEIGHT);
501
502 background_ = new UIImageView();
503 background_->SetTouchable(false);
504 background_->SetSrc("/userdata/tmp.jpg");
505 background_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
506 background_->SetVisible(true);
507 background_->Invalidate();
508
509 cam_manager = new SampleCameraManager();
510 cam_manager->SampleCameraCreate();
511
512 SetHead();
513
514 SetBottom();
515 scroll->Add(bttnLeft);
516 scroll->Add(bttnMidle);
517 scroll->Add(bttnRight);
518 scroll->Add(bttnRecord);
519
520 RootView *rootView = RootView::GetWindowRootView();
521 rootView->SetPosition(0, 0);
522 rootView->Resize(SCREEN_WIDTH, SCREEN_HEIGHT);
523 rootView->SetStyle(STYLE_BACKGROUND_COLOR, Color::ColorTo32(Color::Black()));
524
525 rootView->Add(surfaceView);
526 rootView->Add(background_);
527 rootView->Add(backBttn);
528 rootView->Add(backIcon);
529 rootView->Add(txtMsgLabel);
530 rootView->Add(recordImage);
531 rootView->Add(tmLabel);
532 rootView->Add(scroll);
533 rootView->Add(slider);
534
535 int timecnt = 0;
536 while (1) {
537 if (++timecnt > 5) { /* 5s timeout */
538 printf("wait camera timeout!! \n");
539 break;
540 }
541 if (cam_manager->SampleCameraIsReady()) break;
542 sleep(1);
543 }
544 SetUIContent(rootView);
545 }
546
OnInactive()547 void CameraAbilitySlice::OnInactive()
548 {
549 printf("CameraAbilitySlice::OnInactive\n");
550 AbilitySlice::OnInactive();
551 }
552
OnActive(const Want & want)553 void CameraAbilitySlice::OnActive(const Want &want)
554 {
555 printf("CameraAbilitySlice::OnActive\n");
556 AbilitySlice::OnActive(want);
557
558 if (cam_manager) {
559 cam_manager->SampleCameraStart(surfaceView->GetSurface());
560 if (background_) {
561 background_->SetVisible(false);
562 background_->Invalidate();
563 }
564 }
565 }
566
OnBackground()567 void CameraAbilitySlice::OnBackground()
568 {
569 printf("CameraAbilitySlice::OnBackground\n");
570 AbilitySlice::OnBackground();
571 if (background_) {
572 background_->SetSrc("/userdata/tmp.jpg");
573 background_->SetVisible(true);
574 background_->Invalidate();
575 }
576 if (cam_manager)
577 cam_manager->SampleCameraStop();
578 }
579
OnStop()580 void CameraAbilitySlice::OnStop()
581 {
582 printf("CameraAbilitySlice::OnStop\n");
583 AbilitySlice::OnStop();
584 }
585 }
586