Thanks, i stubled upon your blog today and already found a lot of
usefull code there. I guess that's how you arrived at this post :)

It's kind of a sad situation really. I'd love to use android to it's
full potential but it seems that some things aren't just where they
should be yet. Never the less, android is the way to go!

On 29 Jan., 20:46, luke <[email protected]> wrote:
> All these bugs (and several more you may not have discovered yet, e.g.
> event noise on touch up/down) are covered in excruciating detail on my
> blog,http://lukehutch.wordpress.com/android-stuff.  The main posts
> you will want to read are:
>
> http://lukehutch.wordpress.com/2009/01/10/full-working-multitouch-on-...http://lukehutch.wordpress.com/2009/01/25/get-multi-touch-support-on-...http://lukehutch.wordpress.com/2010/01/06/my-multi-touch-code-ported-...
>
> These are hardware / firmware limitations and it is actually
> impossible to overcome them on current hardware/firmware.  Some could
> possibly be fixed with a firmware update from synaptics though this
> probably won't happen (e.g. partially raising a touch point up loses
> one of X or Y but not the other) and some of the bugs will not be
> fixed without new hardware (the fact it's a 2x1D device and not a 2D
> device).
>
> --
> Luke Hutchison
>
> On Jan 28, 7:06 pm, Mario Zechner <[email protected]> wrote:
>
> > It seems Toon Warz, another game usingmultitouchalso has some issues
> > on N1 and Droid. Can others confirm the problem with the code posted
> > above? Did anyone arrive at a solution? This is a pretty bad situation
> > for game developers as nothing freaks users more out than bad
> > controls. I think the code above is even a demo code from the android
> > framework so i find it kinda strange that the problem didn't pop up
> > during their testing phase. I also couldn't find any information on
> > the logcat output telling me about the drop of a bad pointer.
>
> > On 23 Jan., 19:39, mzechner <[email protected]> wrote:
>
> > > I can confirm this problem using the sample code above, my own code
> > > and playing multipong. I created two videos, one showing the problem
> > > for the sample code above and one showing it in multipong.
>
> > >http://www.youtube.com/watch?v=865cd2Ui0Co(samplecode)http://www.yout...market)
>
> > > Each time thepointergo crazy LogCat displays messages tagged
> > > "InputDevice" saying "droppingbadpointer#0", in all 3 cases (sample
> > > code, my code, multipong). ThepointerIds get mixed up, and as can be
> > > seen in the video for the sample code above the x coordinate for the
> > > secondpointeris wrong. I have a suspicion that this might be a
> > > driver related bug. In any way it makes writting games withmultitouch
> > > impossible.
>
> > > The bug can be reproduced by quickly tapping around and then settle
> > > with 2 digits on the screen. It does not work always but often enough
> > > to be annoying in a game with a dual analog stick setup on screen
> > > (like in my code).
>
> > > I hope this gets fixed asap. If more people can confirm this i file a
> > > bug athttp://b.google.com/
>
> > > On 15 Jan., 21:32, Mirmathrax <[email protected]> wrote:
>
> > > > here is in the original text from the post, this explains how to make
> > > > the bug occur:
>
> > > >  1)  Touch screen with finger 1 and start doodling
> > > >      2)  Without removing finger 1, touch screen with finger 2 and
> > > > start doodling
> > > >      3)  Remove finger 1 from the screen (without removing finger 2)
> > > >      4)  Replace finger 1 on the screen and start doodling again
> > > > (never remove finger 2)
> > > >      5)  Voila, you will see the bug.  The drawn lines for finger 1
> > > > will suddeny connect to finger 2.
>
> > > > This is because  there is a bug when the first finger is placed back
> > > > down again, the event only has points for the wrong finger!  Even
> > > > though finger 1 went back down at a new location, the code thinks for
> > > > some reason that finger 2 is the one that went back down (but it never
> > > > went up).
>
> > > > -Colin
>
> > > > On Jan 15, 2:35 pm, rollbak <[email protected]> wrote:
>
> > > > > Can you please explain which the issue is?
>
> > > > > On Jan 15, 1:09 pm, Mirmathrax <[email protected]> wrote:
>
> > > > > > Multi-touch API is bugged (at least on Motorola Droid). Here is a
> > > > > > method to reproduce the error for analysis:
>
> > > > > > 1)  Create a new android project in Eclipse with the following 
> > > > > > fields:
>
> > > > > >  Project name:           PointerLocation
> > > > > >  Build target:              Android 2.0.1
> > > > > >  Application Name:     PointerLocation
> > > > > >  Package Name:        com.example.pointerlocation
> > > > > >  Create Activity:         PointerLocation
>
> > > > > > 2)  Copy the following code and paste this into the
> > > > > > PointerLocation.java file that is automatically created
>
> > > > > > /*
> > > > > >  * Copyright (C) 2007 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.example.pointerlocation;
>
> > > > > > import android.app.Activity;
> > > > > > import android.content.Context;
> > > > > > import android.graphics.Canvas;
> > > > > > import android.graphics.Paint;
> > > > > > import android.graphics.Paint.FontMetricsInt;
> > > > > > import android.os.Bundle;
> > > > > > import android.util.Log;
> > > > > > import android.view.MotionEvent;
> > > > > > import android.view.ViewConfiguration;
> > > > > > import android.view.WindowManager;
> > > > > > import android.view.VelocityTracker;
> > > > > > import android.view.View;
>
> > > > > > import java.util.ArrayList;
>
> > > > > > /**
> > > > > >  * Demonstrates wrapping a layout in a ScrollView.
> > > > > >  *
> > > > > >  */
> > > > > > public class PointerLocation extends Activity {
> > > > > >     @Override
> > > > > >     protected void onCreate(Bundle icicle) {
> > > > > >         super.onCreate(icicle);
> > > > > >         setContentView(new MyView(this));
>
> > > > > >         // Make the screen full bright for this activity.
> > > > > >         WindowManager.LayoutParams lp = getWindow().getAttributes();
> > > > > >         lp.screenBrightness = 1.0f;
> > > > > >         getWindow().setAttributes(lp);
> > > > > >     }
>
> > > > > >     public static class PointerState {
> > > > > >         private final ArrayList<Float> mXs = new ArrayList<Float>();
> > > > > >         private final ArrayList<Float> mYs = new ArrayList<Float>();
> > > > > >         private boolean mCurDown;
> > > > > >         private int mCurX;
> > > > > >         private int mCurY;
> > > > > >         private float mCurPressure;
> > > > > >         private float mCurSize;
> > > > > >         private int mCurWidth;
> > > > > >         private VelocityTracker mVelocity;
> > > > > >     }
>
> > > > > >     public class MyView extends View {
> > > > > >         private final ViewConfiguration mVC;
> > > > > >         private final Paint mTextPaint;
> > > > > >         private final Paint mTextBackgroundPaint;
> > > > > >         private final Paint mTextLevelPaint;
> > > > > >         private final Paint mPaint;
> > > > > >         private final Paint mTargetPaint;
> > > > > >         private final Paint mPathPaint;
> > > > > >         private final FontMetricsInt mTextMetrics = new 
> > > > > > FontMetricsInt
> > > > > > ();
> > > > > >         private int mHeaderBottom;
> > > > > >         private boolean mCurDown;
> > > > > >         private int mCurNumPointers;
> > > > > >         private int mMaxNumPointers;
> > > > > >         private final ArrayList<PointerState> mPointers
> > > > > >                  = new ArrayList<PointerState>();
>
> > > > > >         public MyView(Context c) {
> > > > > >             super(c);
> > > > > >             mVC = ViewConfiguration.get(c);
> > > > > >             mTextPaint = new Paint();
> > > > > >             mTextPaint.setAntiAlias(true);
> > > > > >             mTextPaint.setTextSize(10
> > > > > >                     * getResources().getDisplayMetrics().density);
> > > > > >             mTextPaint.setARGB(255, 0, 0, 0);
> > > > > >             mTextBackgroundPaint = new Paint();
> > > > > >             mTextBackgroundPaint.setAntiAlias(false);
> > > > > >             mTextBackgroundPaint.setARGB(128, 255, 255, 255);
> > > > > >             mTextLevelPaint = new Paint();
> > > > > >             mTextLevelPaint.setAntiAlias(false);
> > > > > >             mTextLevelPaint.setARGB(192, 255, 0, 0);
> > > > > >             mPaint = new Paint();
> > > > > >             mPaint.setAntiAlias(true);
> > > > > >             mPaint.setARGB(255, 255, 255, 255);
> > > > > >             mPaint.setStyle(Paint.Style.STROKE);
> > > > > >             mPaint.setStrokeWidth(2);
> > > > > >             mTargetPaint = new Paint();
> > > > > >             mTargetPaint.setAntiAlias(false);
> > > > > >             mTargetPaint.setARGB(255, 0, 0, 192);
> > > > > >             mPathPaint = new Paint();
> > > > > >             mPathPaint.setAntiAlias(false);
> > > > > >             mPathPaint.setARGB(255, 0, 96, 255);
> > > > > >             mPaint.setStyle(Paint.Style.STROKE);
> > > > > >             mPaint.setStrokeWidth(1);
>
> > > > > >             PointerState ps = new PointerState();
> > > > > >             ps.mVelocity = VelocityTracker.obtain();
> > > > > >             mPointers.add(ps);
> > > > > >         }
>
> > > > > >         @Override
> > > > > >         protected void onMeasure(int widthMeasureSpec, int
>
> ...
>
> Erfahren Sie mehr »

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to