J'ai été informé dans une réponse plus tard que je dois ajouter le GestureOverlayView que je crée dans le code à ma hiérarchie de vue, et je ne suis pas 100% comment faire cela. Voici la question originale pour l'exhaustivité.Ajouter GestureOverlayView à ma classe SurfaceView, comment l'ajouter à la hiérarchie?
Je veux que mon jeu reconnaisse les gestes. J'ai cette belle classe SurfaceView que je fais un onDraw pour dessiner mes sprites, et j'ai un thread qui l'exécute pour appeler le onDraw etc.
Tout cela fonctionne très bien.
J'essaye d'ajouter le GestureOverlayView à ceci et cela ne fonctionne tout simplement pas. Enfin piraté où il ne tombe pas en panne, mais ce que j'ai
public class Panel extends SurfaceView implements SurfaceHolder.Callback, OnGesturePerformedListener
{
public Panel(Context context)
{
theContext=context;
mLibrary = GestureLibraries.fromRawResource(context, R.raw.myspells);
GestureOverlayView gestures = new GestureOverlayView(theContext);
gestures.setOrientation(gestures.ORIENTATION_VERTICAL);
gestures.setEventsInterceptionEnabled(true);
gestures.setGestureStrokeType(gestures.GESTURE_STROKE_TYPE_MULTIPLE);
gestures.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
//GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
gestures.addOnGesturePerformedListener(this);
}
...
...
onDraw...
surfaceCreated(..);
...
...
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList<Prediction> predictions = mLibrary.recognize(gesture);
// We want at least one prediction
if (predictions.size() > 0) {
Prediction prediction = predictions.get(0);
// We want at least some confidence in the result
if (prediction.score > 1.0) {
// Show the spell
Toast.makeText(theContext, prediction.name, Toast.LENGTH_SHORT).show();
}
}
}
}
Le onGesturePerformed est jamais appelé. Leur exemple a GestureOverlay dans le fichier XML, je n'utilise pas, mon activité est simple:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Panel p = new Panel(this);
setContentView(p);
}
Je suis un peu d'une perte de la pièce manquante d'informations ici, il ne remet pas OnGesturePerformed et le joli joli jaune "vous dessinez un geste" n'apparaît jamais.
wow été il y a des siècles depuis que j'ai bricolé avec ça. Cette nouvelle information me permettra cependant de revenir en arrière. – Codejoy