/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.ex.camera2.portability; import android.os.Handler; import android.os.Looper; import android.os.Message; import java.util.LinkedList; class HistoryHandler extends Handler { private static final int MAX_HISTORY_SIZE = 400; final LinkedList mMsgHistory; HistoryHandler(Looper looper) { super(looper); mMsgHistory = new LinkedList(); // We add a -1 at the beginning to mark the very beginning of the // history. mMsgHistory.offerLast(-1); } Integer getCurrentMessage() { return mMsgHistory.peekLast(); } String generateHistoryString(int cameraId) { String info = new String("HIST"); info += "_ID" + cameraId; for (Integer msg : mMsgHistory) { info = info + '_' + msg.toString(); } info += "_HEND"; return info; } /** * Subclasses' implementations should call this one before doing their work. */ @Override public void handleMessage(Message msg) { mMsgHistory.offerLast(msg.what); while (mMsgHistory.size() > MAX_HISTORY_SIZE) { mMsgHistory.pollFirst(); } } }