135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li/* 235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Copyright (C) 2008-2009 The Android Open Source Project 335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Licensed under the Apache License, Version 2.0 (the "License"); 535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * you may not use this file except in compliance with the License. 635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * You may obtain a copy of the License at 735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * http://www.apache.org/licenses/LICENSE-2.0 935aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 1035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Unless required by applicable law or agreed to in writing, software 1135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * distributed under the License is distributed on an "AS IS" BASIS, 1235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * See the License for the specific language governing permissions and 1435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * limitations under the License. 1535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li */ 1635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 17db567c390bd56c05614eaa83c02dbb99f97ad9ccRomain Guypackage android.gesture; 1835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 1935aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Liimport java.util.ArrayList; 2035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 2135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li/** 2235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * The abstract class of a gesture learner 2335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li */ 2435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Liabstract class Learner { 2535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li private final ArrayList<Instance> mInstances = new ArrayList<Instance>(); 2635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 2735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li /** 2835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Add an instance to the learner 2935aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 3035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * @param instance 3135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li */ 3235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li void addInstance(Instance instance) { 3335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li mInstances.add(instance); 3435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li } 3535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 3635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li /** 3735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Retrieve all the instances 3835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 3935aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * @return instances 4035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li */ 4135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li ArrayList<Instance> getInstances() { 4235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li return mInstances; 4335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li } 4435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 4535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li /** 4635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Remove an instance based on its id 4735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 4835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * @param id 4935aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li */ 5035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li void removeInstance(long id) { 5135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li ArrayList<Instance> instances = mInstances; 5235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li int count = instances.size(); 5335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li for (int i = 0; i < count; i++) { 5435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li Instance instance = instances.get(i); 55c534727972c3835ed997e84a349f259915ef2cddRomain Guy if (id == instance.id) { 5635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li instances.remove(instance); 5735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li return; 5835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li } 5935aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li } 6035aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li } 6135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 6235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li /** 6335aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * Remove all the instances of a category 6435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * 6535aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li * @param name the category name 6635aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li */ 6735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li void removeInstances(String name) { 68c534727972c3835ed997e84a349f259915ef2cddRomain Guy final ArrayList<Instance> toDelete = new ArrayList<Instance>(); 69c534727972c3835ed997e84a349f259915ef2cddRomain Guy final ArrayList<Instance> instances = mInstances; 70c534727972c3835ed997e84a349f259915ef2cddRomain Guy final int count = instances.size(); 71c534727972c3835ed997e84a349f259915ef2cddRomain Guy 7235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li for (int i = 0; i < count; i++) { 73c534727972c3835ed997e84a349f259915ef2cddRomain Guy final Instance instance = instances.get(i); 74c534727972c3835ed997e84a349f259915ef2cddRomain Guy // the label can be null, as specified in Instance 75ea46dea9da0fec86f374db98417ed03e1256e01fKenny Root if ((instance.label == null && name == null) 76ea46dea9da0fec86f374db98417ed03e1256e01fKenny Root || (instance.label != null && instance.label.equals(name))) { 7735aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li toDelete.add(instance); 7835aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li } 7935aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li } 80c534727972c3835ed997e84a349f259915ef2cddRomain Guy instances.removeAll(toDelete); 8135aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li } 8235aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li 834758f1216bd16763c72500bc3c2f0fb43c08d613Yang Li abstract ArrayList<Prediction> classify(int sequenceType, int orientationType, float[] vector); 8435aa84b1f9f5e42dd00cb66df993ed1628c8963bYang Li} 85