Android :: Change Screen Orientation When Call Is Ongoing / Phone Process Will Crash
Jun 15, 2009I found if change screen orientation continouously when a call is ongoing, that is, portrait -> landscape -> portrait- >landscape.
View 3 RepliesI found if change screen orientation continouously when a call is ongoing, that is, portrait -> landscape -> portrait- >landscape.
View 3 RepliesWhen views with different type have same id and screen orientation changes,
either java.lang.ClassCastException: android.view.AbsSavedState$1 or java.lang.IllegalArgumentException: Wrong state class -- expecting View State will occur. (depends on the view's order)
Because View.dispatchRestoreInstanceState() checks id only.
You may wonder why anyone would make views with different type to have same id.
But it can happen when you use tab activity.
Imagine you have tab activity with two children activity.
Tab1 is ListActivity and Tab2 is ExpandableListActivity.
Both activity have id of "@android:id/list" but the type of view is different.
This means we cannot use ListActivity & ExpandableListActivit at the same in one tab activity.
I've been experimenting with orientation change and have seen a strange behavior (at least to my opinion) when I change the orientation from landscape to portrait. To make the explanation more concrete let's consider the following super-simple code:
CODE:...................
I put breakpoints at lines 9 and 15 and start the emulator in debug mode. The application starts and hits the breakpoint at line 9; so far so good. Then I press Ctrl+F11 to change the orientation from portrait to landscape. The debugger stops first at line 15 and then line 9. Everyhting normal so far. I hit once again Ctrl+F11 to change the orientation from landscape to portrait and some mumbo-jumbo starts happening. Here is the sequence of function calls I observe: 1.onDestroy() 2.onCreate() 3.onDestroy() 4.onCreate()
I really fail to understand why the platform needs to make the calls "2.onCreate()" and "3.onDestroy()". Can anyone explain why this is happening? At least I don't find it convenient because I need to implement more logic, because the extra calls "2.onCreate()" and "3.onDestroy()" cause side effects in my case. However, it would be interesting to know why these extra calls are taking place.
I want to change layout without calling the onCreate method. i also define android:configChanges="orientation|keyboardHidden" in my activity and it is not calling the onCreate method but the layout not adjust appropriately on landscape mode.
my current layout look like as follows.
after change orientation as landscape it look like as follows:
but on landscape i want the following result.
is there any auto adjacent property?
how can i do it?
Is it possible to check the screen orientation (I mean whether the screen in landscape or portrait mode) while the outgoing call is going on.If it possible please suggest me how to achieve that.
View 2 Replies View RelatedI am going crazy here... I've had this thing since it launched and everything is great except I keep hitting buttons with my face during calls! I mute, sometimes end calls, start 3 way calls etc and I have no idea how to prevent it. Is there any way I can make the screen lock during phone calls or change the call screen altogether?
View 12 Replies View RelatedI want my Activity to be always in portrait mode and I do NOT want the onDestroy() method to be called. There are some interesting articles about that at: http://www.androidguys.com/2008/11/24/rotational-forces-part-four/
The solution seems to be: In AndroidManifest.xml:
CODE:...............
I've tried it and it seems to work. Is there any other alternative or is it the correct solution?
I notice when using the emulator that when the screen is flipped, I get a following logcat message:
INFO/WindowManager(589): onOrientationChanged, rotation changed to 1
How can I catch this in the code? I want to know whenever the orientation changes. I assume I have to set a listener, but I can't find an example anywhere.
I am making an Android app which is currently coming along nicely - I've hit upon a couple of stumbling blocks.
1) How do I stop the screen from going dim/off and the phone locking while the application is running?
2) Can I force the phone to enter landscape mode on running my application?
In the following sequence of events:
1. Start a new thread (as a result of a button click - or similar).
2. User changes the screen orientation (causing the Activity that started the thread to be destroyed).
3. Thread finishes, and wants to do some dialog (or any UI) work. However, doing a showDialog, dismissDialog, ... will crash, as the thread it still referring to the old Activity.
This can be solved by updating the data in the thread to refer to the new Activity upon a screen orientation change.
However, couldn't the Android framework just forward any requests from a destroyed activity, to the newly created Activity, saving us developers of handling it ourselves?
I am working on one android application... I want to send DTMF tone on ongoing call....after googling i saw in some post that right now its not possible... is android build any api for froyo? Normally using "," I can send DTMF but after call establish how to do? How by default Dialer is able to send DTMF on ongoing call...HTC also build there own Dialer..Then How they are doing?
View 2 Replies View RelatedSpecifically, I need a way of _not_ performing the onPause functionality I've implemented when it occurs because of a change in screen orientation.
View 9 Replies View RelatedFrom reading Romain Guy's blog post, I understand keep static reference to a Drawable can create huge memory leaks. So what is the recommended solution if I don't want to reload my big Drawable image every time screen orientation changes and effect on performance? Currently my app takes >3 seconds to complete each orientation change.
View 8 Replies View RelatedI want to change the screen orientation from portrait to Landscape and vice-versa when the user shakes his/her android mobile phone, can any one help how to achieve this, because I do not know what event is fired, at the time his/her shaking thier android mobile phone. For Instance When the users touch the button in UI, touch event is fired, similarly when the user shakes his android mobile phone, what is fired.
View 3 Replies View RelatedBeen slowly building my app and now JUnit is crashing regularly with logcat as below.
There are no other real hints. No relevant code as this can happen at multiple points of the code. There are no other errors or exceptions thrown. As far as I can tell there is plenty of memory left and my app does not appear to have any leaks I can find during a run outside of JUnit.
CODE:.....................
I am writing a home screen widget and want to update (modify) the home screen widget when the device orientation changes from portrait to landscape or the other way. How can I make it? Currently, I tried to register to CONFIGURATION_CHANGED action like the code below ...
View 3 Replies View RelatedI have a 3 nested ViewFlippers which seem to be working ok except that when I change the screen orientation the view flip back to the first one of my views, giving the user the impression it went back a few steps.I am a bit stumped as to what to do and was hoping someone had some experience with this.
View 3 Replies View RelatedI'm trying to find a way to properly handle setting up an activity where its orientation is determined from data in the intent that launched it. This is for a game where the user can choose levels, some of which are int portrait orientation and some are landscape orientation. The problem I'm facing is that setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) doesn't take effect until the activity is fully loaded. This is a problem for me because I do some loading and image processing during startup, which I'd like to only have to do once.
Currently, if the user chose a landscape level:
the activity starts onCreate(), defaulting to portrait discovers from analysing its launching Intent that it should be in landscape orientation continues regardless all the way to onResume(), loading information and performing other setup tasks at this point setRequestedOrientation kicks in so the application runs through onPause() to onDestroy() it then again starts up from onCreate() and runs to onResume() repeating the setup from earlier
Is there a way to avoid that and have it not perform the loading twice? For example, ideally, the activity would know before even onCreate was called whether it should be landscape or portrait depending on some property of the launching intent, but unless I've missed something that isn't possible. I've managed to hack together a way to avoid repeating the loading by checking a boolean before the time-consuming loading steps, but that doesn't seem like the right way of doing it. I imagine I could override onSaveInstanceState, but that would require a lot of additional coding. Is there a simple way to do this?
Solution:
As per Daniel's answer, this was actually quite easy to fix. I just needed to make a few small changes. In my 'menu' Activity, where the player would choose which level to play, I just had to add an if/else check to choose which class would be started by my Intent. This was done with a simple int representing portrait or landscape, determined when the player selected a level. I then created a second class extending my 'GameLogic' class; this is the class which contained most of the code for the game itself, rather than the menus, instructions, etc.
public class GameLandscape extends GameLogic{}
Literally that simple and completely empty. That way it inherited all the code from my previous activity where I had already coded it to handle things differently depending on the orientation. Lastly I just had to add a line to the manifest stating that GameLandscape would always run in landscape, and GameLogic would always run in portrait.
I am relatively new to the Android world and am having some difficultly understanding how the whole screen orientation cycle works. I understand that when the orientation changes from portrait to landscape or vice versa the activity is destroyed and then re-created. Thus all the code in the onCreate function will run again. So here's my situation: I have an app that I am working on where it logs into a website, retrieves data, and displays it to the user. While this is all done in background threads, the code that starts these threads is in the onCreate function. Now, the problem lies in that whenever the user changes the screen orientation, the app will log in, retrieve the data, and display it to the user again. What I would like to do is set a boolean that tells the app if it is logged in or not so it knows whether or not it must log in when the onCreate function is called. So long as the app is in memory the HttpClient will exist and contain the cookies from logging the user in but when the app is killed by the system those will go away. So I would assume that I need to do something like setting the logged in boolean to false when the app is killed but since onDestroy is called when the screen is rotated how is this possible? I also looked into the finalize function and isFinishing() but those seem to not be working.
Shorter version: How can I distinguish between when an app is being killed from memory from when an activity is being rotated and different code for each event?
How do we change emulator screen orientation to landscape or portrait?
View 2 Replies View RelatedI am looking at a usecase related to sharing of a phone number of a contact during a call. What I expect to happen is that the phone number is converted to synthesized voice and is spoken into the ongoing call. Is it possible to patch the synthesized voice in an ongoing call?
View 2 Replies View RelatedIs it possible to modify an active call by overlaying a sound track during the call? I looked up the SDK, but couldn't find any api to do this in the documentation. I am trying to investigate the feasibility of playing a previously recorded call/audio clip onto an ongoing call.
View 1 Replies View Relatedis there a way to make application to completely ignore screen orientation change?
View 4 Replies View RelatedIt seems when screen orientation changes, the activity's onCreate() method is called. In my onCreate() method, I have an AlertDialog which pops up when the activity is called. The problem is when I switch the screen sideways, the popup is displayed again. How can I avoid this?
View 1 Replies View RelatedIn onCreate method of Activity, it binds to a remote service and makes use of AIDL intefaces. Is it required to unbind from the remote service when onDestroy is called on screen orientation change.?
If the activity un-bounded from the remote service in onDestroy and if no other contexts are bound to remote service, is remote service likely to get stopped losing the state that it maintains.?
I have created an activity for my game which handles all orientation changes by itself and has a fixed "portrait" layout. Actually it uses the accelerometer and is rendered using 2D canvas methods. If the level has been completed I show up a highscore dialog in which the user can enter his name. The dialog is floating above the underlying level screen which gets blurred out nicely. This generally works.
Problem is that the dialog does not get rotated if the orientation of the phone changes. So even if the keyboard is exposed the dialog is shown in portrait mode instead of landscape. I have tried to use an activity with dialog theme instead but the behavior didn't change. After several tries it seems that I have found the reason for this: Once there's an activity with fixed orientation in the activity stack then all subsequent activities keep this orientation, too. They will not react on orientation changes anymore (e.g. if the keyboard gets exposed).
After upgrading to 1.5 SDK the described behavior changed a little bit. Now at subactivities indead react on orientation changes like expected. However, the need to have an opaque background! That means that neither dialogs nor activities with dialog theme will work. Those will stick with the orientation of the underlaying activity. So my workaround is to first start a sub-activity with an opaque black background. This activity then shows my highscore dialog on top. It looks quite okay but I wonder if there's a better solution? Is it possible to show a dialog above a fixed portrait or landscape activity which automatically adapts to orientation changes?
My program does some network activity in a background thread. Before starting, it pops up a progress dialog. The dialog is dismissed on the handler.This all works fine, except when screen orientation changes while the dialog is up (and the background thread is going). At this point the app either crashes, or deadlocks, or gets into a weird stage where the app does not work at all until all the threads have been killed.How can I handle the screen orientation change gracefully?
View 9 Replies View RelatedI'm testing an app on a Droid. It's a kind of card matching game. I'd like to keep the cards physically located in the same place on the screen regardless of a screen rotation. For example, I can put my thumb on a card, rotate the phone any way I please and the card stays fixed under my thumb. However, the orientation of the content of the card will change to match the current phone rotation. I handle this by transforming the card grid in onCreate. This works fine for 90 degree rotations, but if I do a fast 180 degree flip from one landscape mode to another the screen simply flips and the Activity is NOT destroyed and recreated.
This seems contrary to the documentation:
http://developer.android.com/reference/android/R.attr.html#configChanges
"public static final int configChanges Since: API Level 1
Specify one or more configuration changes that the activity will handle itself. If not specified, the activity will be restarted if any of these configuration changes happen in the system. Otherwise, the activity will remain running and its Activity.onConfigurationChanged method called with the new configuration. "
I am NOT specifying any configChanges in my AndroidManifest.xml file, so it seems that the activity SHOULD be destroyed and recreated. Why isn't it? Is there some way I specify that it should be destroy/ recreated?
Is there a way to make the home screen change orientation with the accelerometer? On my phone, it will only change when I pull out the physical keyboard, which is not really what I'm looking to do most of the time.It changes just fine in all other applications, but the home screen doesn't. Is this a flaw with my phone or a design decision?
View 6 Replies View RelatedI have a requirement where I have to read/parse some data from the server(using HTTPConnection) and then display it on to the screen. To avoid ANR issue I used AsyncTask to perform the above. Now in order to avoid application crash in case the activity gets destroyed(either by OS or if orientation changes or say on any incoming call-->where user stays on the phone for long and for some reason OS destroys/recreates the activity). Currently, I hols the reference of AsyncTask in my activity and then provide a callback(the activity itself) to AsyncTask so that I can pos back message to activity(like closing progress dialog box).In order to avoid memory leaks on onPause I nullify this activity reference in AsyncTask.Before onPause I save the AsyncTask instance using onSaveInstanceState method but I have to use putSerializable for that. I have read on the forums that serialization method is slow, so my question is should I use parcelable approach(and whether the converting AsyncTask to parcelable will be same as creating any other object parcelable). or both these approaches are totally wrong i.e...............
View 10 Replies View Related