• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2014 The Android Open Source Project
3   *
4   * Licensed under the Apache License, Version 2.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *      http://www.apache.org/licenses/LICENSE-2.0
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.android.ex.camera2.portability;
18  
19  import android.os.Handler;
20  import android.os.Looper;
21  import android.os.Message;
22  
23  import java.util.LinkedList;
24  
25  class HistoryHandler extends Handler {
26      private static final int MAX_HISTORY_SIZE = 400;
27  
28      final LinkedList<Integer> mMsgHistory;
29  
HistoryHandler(Looper looper)30      HistoryHandler(Looper looper) {
31          super(looper);
32          mMsgHistory = new LinkedList<Integer>();
33          // We add a -1 at the beginning to mark the very beginning of the
34          // history.
35          mMsgHistory.offerLast(-1);
36      }
37  
getCurrentMessage()38      Integer getCurrentMessage() {
39          return mMsgHistory.peekLast();
40      }
41  
generateHistoryString(int cameraId)42      String generateHistoryString(int cameraId) {
43          String info = new String("HIST");
44          info += "_ID" + cameraId;
45          for (Integer msg : mMsgHistory) {
46              info = info + '_' + msg.toString();
47          }
48          info += "_HEND";
49          return info;
50      }
51  
52      /**
53       * Subclasses' implementations should call this one before doing their work.
54       */
55      @Override
handleMessage(Message msg)56      public void handleMessage(Message msg) {
57          mMsgHistory.offerLast(msg.what);
58          while (mMsgHistory.size() > MAX_HISTORY_SIZE) {
59              mMsgHistory.pollFirst();
60          }
61      }
62  }
63