Android :: Safe To Queue KeyEvents And MotionEvents For Deferred Processing?
Sep 11, 2009
I decided to start pipelining input to increase responsiveness in my games. Basically what I do is when the activity receives a Key or Motion event, it sends it to a feed method in the game, which encapsulates it with a time and whatever else I need and puts it in a queue then immediately returns so the UI loop is never held up waiting for long. The main loop later processes the queue, applying the events in it at the appropriate times.
This works great and makes the games snappy, although now I'm starting to miss touch events intermittently. I realized that the events could be recycled objects and that could make them not safe to queue. Is this the case or is it safe to queue them for deferred processing like I'm doing?
View 5 Replies
Jun 29, 2010
I am curious about the safety of this method I have considered using for passing touch events in my Android application (and testing my understanding of concurrency in Java). Here's the basics:
I have a SurfaceView hooked up to SurfaceHolder.Callback to get user input events, mainly the onTouchEvent callback. After the onTouchEvent method is invoked, I see if event.getAction() == MotionEvent.ACTION_UP and, if so, call a method I have named postTouchEvent which is a member method of my app thread that updates the application's state and draws to the canvas. Code...
Now I understand that it is certainly not atomic, but since I treat it as immutable after receiving it from framework, won't this work? (Instead of synchronizing the post method and the if statement, which I have no problem doing, but I'm asking to learn.)
Here are my thoughts. I know I will have a valid reference to the object but I am unsure in what state I will actually see the object. While testing everything is working out just fine but I am aware of how uncommon threading exceptions can be, even if something is broken.
Also, I can see one problem with this: If another MotionEvent comes though, it's possible that inputEvent in the run() method will be set to a different event than the one that was referenced when this.mInputEvent != null was checked, but this really isn't an issue.
So, is there anything I am missing or, for my purposes, should this be ok?
View 2 Replies
View Related
Aug 29, 2010
My application has a MapView which shows a collection of items in a satellite view. I use the MapController's zoomToSpan() method to initialize the zoom level of MapView. I later discovered that the MapView was showing a blank white screen with grey X's (zoom'd too far, zoom out once and everything looks as expected) for the use case when the collection of item's locations were very close to each other.
So, I modified the code from this:
CODE:......
To this:
CODE:.............
View 3 Replies
View Related
Jan 27, 2009
If I setOnTouchListener for a view the only events I get are ACTION_DOWN events. What do I need to do to capture ACTION_MOVE events which should occur when the user drags a finger across the view?
View 3 Replies
View Related
May 12, 2009
What I want to carry out is that the handle of the SlidingDrawer will be dragged by my finger, and when My finger leaves the screen, the handle of the SlidingDrawer will be just stop there and don't slide to top or bottom.
View 6 Replies
View Related
Nov 27, 2009
as there's a GLSurfaceView in use, no other views receive any KeyEvents. MotionEvents however, are still working as expected. Is there a way to prevent GLSurfaceView from swallowing all KeyEvents?
View 4 Replies
View Related
Apr 4, 2009
I'm trying to create an activity which would be on top of other activities (a small dialog themed activity) and I want to get ALL key events to be ignored by my activity and handled normally by the activity beneath it. When I say all I mean the send, end and back keys too. Is this possible?I've tried setFocusable(false), setting the flag FLAG_NOT_FOCUSABLE, and adding a dummy onKeyListener but nothing doesn't seem to do the trick.
View 4 Replies
View Related
Apr 12, 2010
I'm trying to implement an input method service that receives intents sent by a remote client, and in response to those sends an appropriate KeyEvent. Is there any way to send keys and control the device like using the hardware keys from an input method?
View 2 Replies
View Related
Jul 28, 2010
Is there anyway to intercept that a hard key was pressed by using a service in order to launch an activity?
In other words : Is it possible to handle the KeyEvents in the Service?
View 1 Replies
View Related
Sep 27, 2010
When using torrent-fu, does the computer (doing the downloading) have to be on? Or can I just use torrent-fu to find torrents when I'm at work, queue them up, and when I get home turn the computer on and it'll start the downloads?
View 1 Replies
View Related
May 5, 2010
I need to store a queue into a DB. I need to be able to insert at the head, and append at the tail. I also need to remove items from the head.
Each item is just a string. I need to maintain a todo list -- high priority items are added to the beginning of the queue. and low priority items are append to the end.
View 2 Replies
View Related
Oct 7, 2010
I am queuing up a bunch of runnables into a thread via a Handler.post(). I would like the ability to send a note to that thread that it should pause. By pause I mean, finish the runnable or message you are currently working on, but don't go to the next message or runnable in your message queue until I tell you to continue.
View 2 Replies
View Related
Nov 27, 2009
How can I keep Toast from building up a queue of messages?
I'm working on a board game and I'm sending status messages back to the user with this wrapper function I created for Toast:
CODE:...........
The problem is I've made the flow of game play so simple I can now play it so fast Toast messages queue up, even to the point where they continue to show on the desktop after I quit out of the game. t.cancel() doesn't seem to cancel out the previous message, anyone know what I might be doing wrong?
View 13 Replies
View Related
Sep 29, 2010
Is it possible, with an IntentService, to send another intent to the IntentService from within the IntentService? For example, say my IntentService is processing an Intent which has it write a bunch of data to the database. During this time, several other Intents to write other data may [or may not] have been queued up in the IntentService. Suppose, after processing that Intent by writing the data to the application's database, I want to queue up another Intent to send that data via web service to "the cloud." Perhaps I want to queue this processing in another Intent because sending to the cloud is secondary. Is it possible? Would it cause any problems if the Intent being processed is the only Intent in the queue at the time the IntentService is trying to queue another Intent?
View 2 Replies
View Related
Nov 14, 2009
How can I tell what has and has not bee downloaded? I see options to add to my download queue subscribe...but no option to see what's in the queue or manage what's been downloaded.
View 1 Replies
View Related
Jun 12, 2010
I read somewhere (and have observed) that starting threads is slow. I always assumed that AsyncTask created and reused a single thread because it required being started inside the UI thread.The following (anonymized) code is called from a ListAdapter's getView method to load images asynchronously. It works well until the user moves the list quickly, and then it becomes "janky".final File imageFile = new File(getCacheDir().getPath() + "/img/" + p.image);image.setVisibility(View.GONE);view.findViewById(R.id.imageLoading).setVisibility(View.VISIBLE);
(new AsyncTask<Void, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(Void... params) {
try {Bitmap image;
if (!imageFile.exists() || imageFile.length() == 0) {
image = BitmapFactory.decodeStream(new URL(
"http://example.com/images/"
+ p.image).openStream());
image.compress(Bitmap.CompressFormat.JPEG, 85,
new FileOutputStream(imageFile));
image.recycle();
}image = BitmapFactory.decodeFile(imageFile.getPath(),
bitmapOptions);
return image;
} catch (MalformedURLException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
return null;
} catch (IOException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
return null;
@Override
protected void onPostExecute(Bitmap image) {
if (view.getTag() != p) // The view was recycled.
return;
view.findViewById(R.id.imageLoading).setVisibility(
View.GONE);
view.findViewById(R.id.image)
.setVisibility(View.VISIBLE);
((ImageView) view.findViewById(R.id.image))
.setImageBitmap(image);
}}).execute();I'm thinking that a queue-based method would work better, but I'm wondering if there is one or if I should attempt to create my own implementation.
View 2 Replies
View Related
Mar 30, 2010
I'm writing unit tests for a ListActivity in Android that uses a handler to update a ListAdapter. While my activity works in the Android emulator, running the same code in a unit test doesn't update my adapter: calls to sendEmptyMessage do not call handleMessage in my activity's Handler. How do I get my ActivityUnitTestCase to sync with the MessageQueue thread and call my Handler?
View 2 Replies
View Related
Sep 6, 2010
I was curious about the nature of the handleMessage() and sendMessage() behavior of the Handler class. I want to be able to send message to another thread in such a way that the destination thread can process the message queue when it wants to. It seems, however, that the message is processed by handleMessage() practically as soon as it's sent.
I'm trying to design a game loop thread that does something like this:
CODE:.....
However, I as soon as sendMessage() is called (from the parent/calling thread), the Handler.handleMessage() is processed (in the child/receiving thread), even if the child/receiving thread is blocking in a while loop.
I've seen this problem solved in other games by using a thread-safe list (ConcurrentLinkedQueue). The UI thread just posts events to this queue, and the game loop can remove the events as it seems fit. I just assumed the Handler class was designed for this purpose. It seems it's more intended for asynchronous callbacks to the parent thread.
View 1 Replies
View Related
Nov 11, 2010
I am trying to connect to a MSMQ from an Android phone. The problem is that all the libraries that I seem to find have to run in Windows since they appear to just be wrappers around C libraries ("DLL"). I found J-Integra but it seems like a very messy non-open source solution. Anybody has any ideas? And does anybody know of a server in linux to host queues that I can install for testing?
View 2 Replies
View Related
Apr 10, 2009
I want to develop an app that lets one intercept raw audio data sent for playback (possibly by a different app), and apply audio enhancements over this raw data.Does Cupcake allow such filtering of audio data? If so, which API should I use? I understand this may not be possible at an application level for security reasons.I'm trying to see if this is possible with native code linking to public or private API of Android.
View 3 Replies
View Related
Dec 15, 2009
I want to know that android has a touchscreen requirement about hardware and software.And how does touch gesture processing where, for example, in driver layer or framework or application,
View 4 Replies
View Related
Apr 23, 2010
I'm trying to write an XML parser that takes an RSS feed & fetches the image urls shown in the url attribute of the <media:thumbnail> tag. This is all being done via android.Util.Xml, & is an adaptation of the code shown here. An example RSS feed that I'm trying to use is the BBC News RSS feed. However, media is an additional namespace & (probably) as a result my parser isn't working as it should. A version of my parse method is below. Is there any (no doubt simple) way to get my list of image URLs working?
..................
View 2 Replies
View Related
Nov 8, 2010
Currently, I use a regular activity with some EditText fields as a registration screen in my application.The inputs are used to construct a soap message which is posted to the registration server, with the response being parsed to do some configuration of the application.I'd like to change this to have the registration page load in a WebView instance, so that the registration process takes place on an external web page.This would make it easier to make changes to the registration process without having to deploy a new build, as it would just be a matter of changing the web page that is loaded in the WebView.The question is would there be any way for me to get the response that is sent back from my registration server to the client? From what I can tell, if I went this route, there wouldn't be a way for me to parse the response like I currently do to initialize the application settings.
View 2 Replies
View Related
Apr 17, 2010
"Note that when you write an activity, you can make it stop or continue running when it is moved to the background (see onStop() in Activity Lifecycle). For activities that download data from the network, it's recommended to let them continue downloading so the user can multi-task." As far as I was aware I had to create a service if I wanted to have a background activity such as a media player, internet download, or processing of data in files on the SD card continue when the activity was no longer in the foreground.I went and reread the onStop information on the "Activity Lifecycle" page, which was referred to. But I didn't find any mention of how an activity might continue to run in the background after onStop was called.
View 3 Replies
View Related
Jun 10, 2009
I am creating a custom Widget which extends SurfaceView and I am planning to use it for camera preview.In the main activity I tried to implement some event listeners but can't catch any event.If I press a button the LogCat outputs "Continuing to wait for key to be dispatched" line.Does anyone know how to implement event listeners in main activity using SurfaceView classes?
View 3 Replies
View Related
Aug 10, 2010
My android app was running ok under Eclipse, then I tried to add some GridView sample code from some online examples and now it will not build/run anymore.
I keep getting the major error:
CODE:..
Attempt to include a core VM class in something other than a core library.
I have never put anything to do with 'SocketFactory' in any of my code. I searched all of my code and can't find any code that I did that contains the SocketFactory.class.
I deleted my xml's and classes that I was working on that had to do with the GridView and reverted back to the code I had before, when it was running - but now I continue to get the above error. I even try to use 'Clean' but the error continues. Does anyone know what I should do about this error?
View 1 Replies
View Related
Oct 15, 2011
I want to perform various image processing functions such as threshold,equalize etc on the image i capture from the camera...What should i use in order to do that?
Also,when i installed the app in my phone, after clicking the pic, the next screen appears, and after clicking the button for performing other functions, force close comes up...what could be the reason,because my code works fine without the camera portion...
View 2 Replies
View Related
Oct 7, 2010
Processing has Android support and it seems to be pretty awesome from my 10 minutes of playing with it. But I would like to make a regular (nongraphics) application like a twitter feed reader or something. So is there something like Processing that can do regular apps? Besides Titanium.Basically I am looking for anything that will make coding for android easier, processing was so easy to get working that I was very happy with it, but it is for graphics only. Titanium didn't give me the same wow factor and it isn't open so that kind of takes away from it. What other tools are out there?
View 2 Replies
View Related
Jan 11, 2010
I'm writing an application for Android. I need to make some image processing on the picture taken from camera.I use Camera.PictureCallback to get the photo, and I get picture in byte array.The problem is I want to make operations on every pixel of photo (some filtering and other stuff) so I guess, have photo in byte array is not a bad idea. But I don't know how interpret information in this byte array... The only way I know to make the processing is use BitmapFactory.decodeByteArray() and then use Bitmap object. Is this a good way to handle a lot of image processing?
View 1 Replies
View Related
Dec 31, 2009
I am trying to decode and obtain all frames in a video stream, each of which would be processed by a native signal processing engine and re-encoded back to a MPEG4/MP4 file. I noticed that there was a getFrameAt() function in earlier versions of SDK but its not available in v 1.6 on which I am working. As I am fairly new to Android, I would like to know from more experienced people around here as to how I can extract video frames into a buffer for processing.
View 2 Replies
View Related