I am creating an weight measuring app for android for that
I want to detect a non human touch on android screen so that by measuring its pressure i will be able to detect the weight of the object placed on screen but the problem is capicitive screen of android are detecting only human touch .
please help
It's all about whether the material used is conductive (not only human touch is copnductive). That's just how capacitive screens works. It isn't possible to detect a touch with e.g. a rock, because that isn't conductive.
A coin on the other hand may just work. Because most coins (at least where I am from) contain conductive material.
Related
I have received requirement like this http://www.youtube.com/watch?v=7MYQicokwmY&feature=plcp I am reviewing this requirement.As per requirement we have to build touch detection like in video link for Android enabled Tablets.
In that video toys (toys with circular, star or rectangle shape) uses Conductive Silicone Sensors with that they are detecting touch on screen & deciding shape of external world object like triangle,circle or a star & further processing the shape.
I have to use same touch detection for android tablets.Can anybody help me to find the way to implement this on Android platform ? Is there any API or framework to implement it?
If you see the video around 1:13, they show what I am guessing are some prototypes, the circle has three points, the hexagon too...
My best guess is that the biggest part of the object is non-conductive and only has a few points that are conductive and would actually register as touch points on the screen. The key is that each of them will be different enough that you would be able to recognize them no matter what the orientation is, what the position (and depending on your requirements whether you have several of those objects at the same time on the screen).
You can also play with the area of each conductive points so in your code, you will get the touch information, you can get different pressure values from the MotionEvent
Now how you place the conductive points and how many on each shape is completely up to you and would really depend on what your requirements are (recognizing arbitrary shape is not an option...)
Most touch screens would reject the touch if the area is too large (that's palm rejection), so I don't think there are much other ways to do this...
One thing I find many Android games and emulators get wrong is when the user presses multiple (on-screen) buttons simultaneously. I'm wondering how one could fix that.
Imagine a game like Super Mario World. You have two buttons on the right side (simplified): Y is for running and B is for jumping. Typically, you hold Y most of the time with the tip of your thumb, and when you want to jump you lay down your thumb and press B, too.
Situations like this understandably confuse Android. Instead of detecting two presses, it just moves the one from the Y button down a bit.
What I'd need to fix this is one of the following:
Raw touch data as a bitmap (but probably too computationally expensive, and doesn't leave the touchscreen anyway)
The detected touch points in more detail, e.g. as best-fit ellipses or polygons
The ability to define touch regions. If a finger overlaps such a region a certain amount, the region fires.
(The points are from low- to high level, e.g. if I had the first I could emulate the other ones.)
Any ideas?
Is it possible to detect every pixel being touched? More specifically, when the user touches the screen, is it possible to track all the x-y coordinates of the cluster of points touched by the user? How can I tell the difference between when users are drawing with their thumb and when they are drawing with the tip of a finger? I would like to reflect the brush difference depending on how users touch the screen, and would also like to track x-y coordinates of all the pixels being touched over time. Thanks so much in advance for any help.
This would be very tricky primarily because every android phone is going to behave differently. There are some touch screen devices that are very, very sensitive and some that are basically "dull" by comparison.
It also sounds more like you are wanting to track pressure - how hard is the user pushing on the screen - which is actually supported on android devices.
I think some of your answer may be found by monitoring all of the touch events - in practice, most applications ignore a great number of events or perform some kind of "smoothing" of the events since there is literally a deluge of touch events when the user is manipulating the screen. Doing this may negatively impact your applications performance though.
I would recommend that you look into pressure sensitivity and calculate a circular region around the primary touch point based on pressure, then build your brush around that.
Another idea would be to incorporate more of a gesture approach to what you are trying to do - for example, visualize touching the screen with the tip of two fingers together (index and middle) and rolling the middle finger around the index finger or simply moving the middle finger up and down in relation to the index finger. Both fingers would be moved together for painting. This could be used to manipulate drawing angle on the fly or perhaps even toggle between a set of pre-selected brushes or could change brush size on the fly as you are painting.
Some of the above ideas I would love to see implemented - let me know when you have your app ready.
Good luck!
Rodney
If you have a listener on your image it will respond that there was a touch within that bounding box, basically.
So, to get what you want, you could, but, I would never do this, create a box around every pixel, or small group of pixels, and listen for a touch.
Wherever you get a touch, it may fire off an event, then you can react accordingly.
I can't think of any other solution that will give you each pixel that a person touched, at one time.
You may want to read up on multitouch though, as there are some suggestions in here that my help you:
http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
If you're looking for a way to get your content view as a View after Activity#setContentView(int), then you can set an id on the outer-most element of your layout:
android:id="#+id/entire_view" and reference it in your onCreate() method after setContentView:
View view = getViewById(R.id.entire_view);
view.setOnTouchListener( ... );
I am developing an application that will behave slightly different depending on the type of screen. Is there any way to detect it?
android.content.res.Configuration contains a value called touchscreen, which could be TOUCHSCREEN_STYLUS (=resistive), TOUCHSCREEN_FINGER (=capacitive), TOUCHSCREEN_NOTOUCH (=no touch screen), TOUCHSCREEN_UNDEFINED (=uh oh).
EDIT: I got Dianne'd again :) So - bottom line, it seems like there is no way to get the actual physical properties of the screen. I guess your best bet is to have a setting to allow users to switch between your two modes.
I have a small trick to do it but requires a canvas.
Just detecting in a motionEvent if
event.getPressure() > 0 then is capacitive ; event.getSize() > 0 then is resistive
the problem is I dont want to use a canvas just for detecting it :(
I'd like to know if there's a way to get the size or the limits of a touched area ? So for instance, it could give me how many pixel the finger is covering.
In fact the same question has been posted here for the Ipad :
iPad: Measure/detect covered area by a finger touch on screen (NOT only touch coordinates)
I think it will depend also of which type of screen android is running on.
So I'd like to know if it is possible under android ? Thank you.
Try MotionEvent#getSize(int)