[android-developers] Digest for android-developers@googlegroups.com - 18 Messages in 4 Topics

Comments: (0)

Group: http://groups.google.com/group/android-developers/topics

    "Diego N." <diegonunes.sistema@gmail.com> Feb 01 12:19AM -0200  

    Prezados, boa noite.
     
    Qual APIs vocês usam para download de videos assíncrono? Terei um GridView
    de videos e preciso fazer o carregamento assíncrono dos mesmos.
     
    Obrigado.
     
    --
    http://about.me/dnassuncao
     
    Diêgo Nunes Assunção
    "Give Peace a Chance"

     

    dashman <erjdriver@gmail.com> Jan 31 06:07AM -0800  

    The problem with bind/unbind - is that when the activity finishes the
    service gets stopped.
     
    I want the service to be around - even if the mainactivity is killed.
     
    in the Activity.onCreate() i do
     
    Intent requestIntent = new Intent(this, MainService.class);

    startService(requestIntent);
     
    The problem is that with the above - even if the service is active - it's
    onStartCommand()
    gets called again.
     
    Should I just check a variable (i.e. onStartCommand() being call not the
    first) - i just return.
     
    I want the method to be executed just once per service life.
     
     
     
     
     
     
     
     
    On Thursday, January 30, 2014 7:43:11 PM UTC-5, TreKing wrote:

     

    dashman <erjdriver@gmail.com> Jan 31 06:19AM -0800  

    The problem with bind/unbind - is that when the activity finishes the
    service gets stopped.
     
    I want the service to be around - even if the mainactivity is killed.
     
    I kill the mainactivity by going to the active app list and removing it.
     
    Then when I go to the phone Settings>>Apps and look at the Running page - I
    see an entry of 0 process and 1 service for my app.
     
    (the onDestroy method of my service is not called)
     
    Then when i run the app again (i assume the service is active) so
     
    in the Activity.onCreate() i do
     
    Intent requestIntent = new Intent(this, MainService.class);

    startService(requestIntent);
     
    The problem is that with the above - even if the service is active - it's
    onCreate()
     
    gets called again.
     
     
     
     
     
    On Thursday, January 30, 2014 7:43:11 PM UTC-5, TreKing wrote:

     

    TreKing <trekingapp@gmail.com> Jan 31 10:43AM -0600  


    > The problem with bind/unbind - is that when the activity finishes the
    > service gets stopped.
     
    > I want the service to be around - even if the mainactivity is killed.
     
    Ah. Well, a little hacky, but you could save a boolean SharedPreference
    that indicates when the Service is started state. Set it in onStartCommand,
    clear it whenever you stop the service.
     
    Could you elaborate on what you're doing in the service that requires you
    only run it once if already running?
     
    -------------------------------------------------------------------------------------------------
    TreKing <http://sites.google.com/site/rezmobileapps/treking> - Chicago
    transit tracking app for Android-powered devices

     

    dashman <erjdriver@gmail.com> Jan 31 09:00AM -0800  


    > Absolutely - happy to explain.
     
    My service can be started at phone bootup - works wonderfully.
     
    Now when the user starts my app (Activity) - in the onCreate method
    i want to see if the service is running - if not running - i want to run it.
     
    I've taken your advice and in the Activity.onstart/onstop - i bind to the
    service.
    (works fine)
     
     
    The problem is that in the activity.onCreate() method when i call
    startActivitry() -
     
    it calls the services onCreate() and onStartCommand().
     
    I'm thinking that it deletes the running service (even though the
    onDestroy() does not seem
    too called - and then creates a new service object - explained by the above
    2 calls.
     
     
    Basically, in the Activity.onCreate() - I'd like to launch the service if
    it's not running.

     

    TreKing <trekingapp@gmail.com> Jan 31 12:56PM -0600  

    I was asking more along the lines of "what is your service actually doing".
    What is its purpose that requires this limitation? Is it a long-running
    task it's executing or something quick?
     
    In any case, on further thought: Service.onCreate() should only be called
    if the service is not already running, so you can use that to your
    advantage.
     
    So from your activity, always call startService(), the activity won't care
    if the service is running or not, it'll be up to the service to do the
    right thing.
     
    If the service is not started, onCreate will be called and you can start
    your work from there, then onStartCommand gets called, which you can ignore.
    If the service is started, onCreate will NOT be called, the work will NOT
    be restarted, and onStartCommand will still be called, which you can again
    ignore.
     
     
     
    --
     
    -------------------------------------------------------------------------------------------------
    TreKing <http://sites.google.com/site/rezmobileapps/treking> - Chicago
    transit tracking app for Android-powered devices

     

    dashman <erjdriver@gmail.com> Jan 31 11:29AM -0800  

    The service doesn't do much right now - in fact I'm not creating a worker
    thread in onStartCommand()
     
    But it is a listener for some system callbacks - but later I might add a
    worker thread - will always be running.
     
    Basically I want a single instance of the service running all the time.
     
     
    I read your reply and what's happening is that Service.onCreate() is being
    called when called from Activity.onCreate()
    - so I guess the old service was deleted.
     
    But if it's being deleted - Service.onDestroy() is not being called.

     

    dashman <erjdriver@gmail.com> Jan 31 11:39AM -0800  

    What's confusing is this.
     
    I've got the app and service running.
     
    Then using the active app-list option of the launcher, I remove the app.
     
     
    I would think this would kill the app - but not the service.
     
    Service.onDestroy() is not called.
     
     
    But now if I restart the app - the Service.onCreate() is called

     

    Kostya Vasilyev <kmansoft@gmail.com> Feb 01 12:01AM +0400  


    > I would think this would kill the app - but not the service.
     
    > Service.onDestroy() is not called.
     
    > But now if I restart the app - the Service.onCreate() is called
     
    Sounds like your app's process gets killed. When this happens, the
    service's onDestroy will not be called.
     
    Next when you start the app's UI (activity), the process is created again,
    and the service is too.
     
    You can watch this in the logcat, and for more details, use system settings
    -> apps -> running, or "adb shell ps", where "ps" is the standard Unix
    command that gives the list of running processes.
     
    -- K

     

    dashman <erjdriver@gmail.com> Jan 31 12:21PM -0800  

    I think your analysis is correct.
     
    I also think it happens because my service doesn't create a worker thread.
     
    In the onStartCommand() method - it sets up some system listeners and
    returns STICKY.
     
    So when the main app is being killed (when i remove it from the active apps
    list) - i think the service
    is being killed - but the onDestroy is not being called (as you mentioned).
     
    I verified with the ps command - and it's gone.
     
    So should I create a worker thread or a handler - i will use it later on
    for some work.
     
     
     
     
     
    On Friday, January 31, 2014 3:01:28 PM UTC-5, Kostya Vasilyev wrote:

     

    Steve Gabrilowitz <steveg1701@gmail.com> Jan 31 03:30PM -0500  

    Short answer to the subject line:
     
    private boolean isMyServiceRunning() {
    ActivityManager manager = (ActivityManager)
    getSystemService(this.ACTIVITY_SERVICE);
    for (RunningServiceInfo service :
    manager.getRunningServices(Integer.MAX_VALUE)) {
    if
    ("com.gabriloware.notifier.voicemail.VoiceMailNotifierService".equals(service.service.getClassName()))
    {
    return true;
    }
    }
    return false;
    }
     
    to elaborate a bit, my app will start the service at bootup if it is
    configured to do so. The associated activity has a checkbox to allow the
    user to control the service and to also indicate the service status.
     
    public class VoiceMailNotifier extends BroadcastReceiver
    {
    public void onReceive(Context arg0, Intent arg1)
    {
    SharedPreferences ConfigData =
    arg0.getSharedPreferences("user_prefs",
    arg0.MODE_PRIVATE);
    Boolean StartAtBoot = ConfigData.getBoolean("key_service", true);
    if (StartAtBoot) {
    Intent startServiceIntent = new Intent(arg0,
    VoiceMailNotifierService.class);
    arg0.startService(startServiceIntent);
    }
     
    }
    }
     
    OnPreferenceChangeListener ServiceActiveChange=new
    OnPreferenceChangeListener() {
     
    @Override
    public boolean onPreferenceChange(Preference preference, Object
    newValue) {
    boolean StartService = (Boolean) newValue;
    if (StartService) {
    Intent startServiceIntent = new
    Intent(VoiceMailNotifierController.this, VoiceMailNotifierService.class);
     
    VoiceMailNotifierController.this.startService(startServiceIntent);
    } else {
    stopService(new
    Intent(VoiceMailNotifierController.this,VoiceMailNotifierService.class));
    }
    return true;
    }
    };
     
     
     
     
     
     

     

    Kostya Vasilyev <kmansoft@gmail.com> Feb 01 12:34AM +0400  

    How many threads a service / process has "inside" does not have any effect
    on how likely it's to be killed.
     
    You should expect that your app's entire process, including any services
    (and threads, of course) can be killed by the system any time.
     
    Now since you mentioned swiping -- in case you're running 4.4, it appears
    to have a bug where swiping kills the process.
     
    In general, maintaining an ever-running service is not an easy task, unless
    you use the official "startForeground" API (which by design puts an icon
    into the status bar).
     
    Some (say, Mark Murphy who doesn't appear to be on this list anymore),
    would call it an "anti-pattern". I tend to agree.
     
    -- K
     
     
     

     

    dashman <erjdriver@gmail.com> Jan 31 01:26PM -0800  

    yes this is on 4.4
     
    i saw the startForeground API call - but my service really is a background
    service...
     
    but i guess i'll have to use that now.
     
     
     
     
    On Friday, January 31, 2014 3:34:41 PM UTC-5, Kostya Vasilyev wrote:

     

    dashman <erjdriver@gmail.com> Jan 31 01:56PM -0800  

    calling startForeground() seems to have done the trick.
     
     
    Not entirely comfortable because it's not a foreground service - but it
    does need to be there on at least until the user tells it to stop -
     
    I hope it's not eating up too much resources.
     
     
    Thanks everyone.
     
     
     

     

    Kostya Vasilyev <kmansoft@gmail.com> Feb 01 02:00AM +0400  

    I'd say trying STICKY and be careful to not swipe your app from the recents
    list (which kills the process... can be a support issue).
     
    -- K
     
     

     

    pskr <pskrtech@gmail.com> Jan 31 11:25AM -0800  

    I am calculating the screen size in inches as the following:
     
    DisplayMetrics dm = new DisplayMetrics();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    getWindowManager().getDefaultDisplay().getRealMetrics(dm);
    } else {
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    }
    double x = Math.pow(dm.widthPixels/dm.xdpi,2);
    double y = Math.pow(dm.heightPixels/dm.ydpi,2);
    double screenInches = Math.sqrt(x+y);
     
    For Samsung Galaxy S2 (SGH-I727), the display metrics I get is:
     
    DisplayMetrics{density=1.5, width=480, height=800, scaledDensity=1.5,
    xdpi=160.42105, ydpi=160.0}
     
    so, the size comes out to be 5.83 inches, which is incorrect and it should
    be 4.53 inches.
     
    Is there a better way? Works for few other devices I have. Is SGH-I727
    reporting incorrect values?
     
    Thanks.

     

    Latimerius <l4t1m3r1us@gmail.com> Jan 31 09:31PM +0100  


    > Is there a better way? Works for few other devices I have. Is SGH-I727
    > reporting incorrect values?
     
    Yes, I'm afraid. I have tried to solve the same problem and failed to find
    a solution. The issue has been discussed here already (possibly several
    times) so feel free to check out the archives. To give you a summary, the
    xdpi and ydpi fields are not used by the Android framework so even if a
    device manufacturer fails to fill in correct values, nothing breaks
    immediately which often allows the bug to slip under radar.
     
    Some devices return correct values, some devices return slightly incorrect
    ones (even Google's own Nexus 7 does) and yet others return grossly
    incorrect xdpi and ydpi (I remember one of the small-screen low-end Samsung
    Galaxy phones returned 160 when in fact the actual value was slightly over
    120 dpi, and an LG Optimus model gave 160 instead of 180).
     
    You'll notice that the incorrect value is often 160 (or 240) which I
    believe might be due to these values being the representatives for mdpi and
    hdpi categories. I imagine they might be used as defaults that just stay
    there if the manufacturer doesn't take care to replace them with actual
    values for the particular screen. That's just my speculation though.

     

    Ganesh <ganesh.vijayan@gmail.com> Jan 30 11:21PM -0800  

    Dear Experts,
     
    In Android 4.4.2, adaptive playback is a new feature that has been
    introduced. I am able to understand the implications on the codec and the
    related framework. However, there is one specific point which I am unable
    to understand completely.
     
    In case of adaptive playback, the codec employs a metadata on it's output
    port which basically abstracts and packages an underlying buffer handle
    (probably a gralloc handle). If a resolution changes, I *presume *the codec
    updates the gralloc handle attributes directly and sends the buffer back to
    the OMX Client without a port settings change.
     
    My first question is: Is my understanding and assumption correct?
     
    If so, how does the surfaceflinger/SurfaceTexture know that the incoming
    payload is in metadata format and how does it retrieve the width and height
    from the underlying Gralloc implementation?
     
    Can you please point me to the relevant sources which will help me to
    understand this issue better?
     
    Many thanks for your precious time in advance.
     
    Best Regards,
    Ganesh

     

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

[android-developers] Digest for android-developers@googlegroups.com - 21 Messages in 11 Topics

Comments: (0)

Group: http://groups.google.com/group/android-developers/topics

    pskr <pskrtech@gmail.com> Jan 30 02:05PM -0800  

    From Kitkat <http://developer.android.com/about/versions/android-4.3.html>release notes:

    Android now offers a custom Java Security Provider in the KeyStore<http://developer.android.com/reference/java/security/KeyStore.html>facility, called Android Key Store, which allows you to generate and save
    private keys that may be seen and used by only your app.
    When I tried to store a SecretKey, I get exception.
     
    "Entry must be a PrivateKeyEntry or
    TrustedCertificateEntry; was " + entry);
     
    So, is there a way to store a secret key? This key should be available only
    to my app (not even user). I plan to use it to verify things like trials,
    purchases, etc. (and to avoid server calls for this purpose) in my app.
     
    I tried to generate a keypair and store the private key, but I need to
    provide a certificate chain. How can I generate a self signed certificate
    in app's code and use it for this purpose (chain of 1 certificate)? Is this
    even a correct usage?
     
    Thanks for your time.

     

    Nikolay Elenkov <nikolay.elenkov@gmail.com> Jan 31 10:06AM +0900  


    > So, is there a way to store a secret key? This key should be available only
    > to my app (not even user). I plan to use it to verify things like trials,
    > purchases, etc. (and to avoid server calls for this purpose) in my app.
     
    No, only public-private key pairs are supported (RSA, DSA and ECDSA)
     
    > provide a certificate chain. How can I generate a self signed certificate in
    > app's code and use it for this purpose (chain of 1 certificate)? Is this
    > even a correct usage?
     
    A self-signed certificate is automatically generated when you generate the
    key. If you don't need the certificate simply don't use it. You can use the
    RSA key to wrap your secret keys and then store them in the filesystem.
    See this sample:
     
    https://android.googlesource.com/platform/development/+/master/samples/Vault/src/com/example/android/vault/SecretKeyWrapper.java

     

    pskr <pskrtech@gmail.com> Jan 30 07:14PM -0800  

    Thanks a lot, especially for the sample. Will try it.

     

    pskr <pskrtech@gmail.com> Jan 30 09:46PM -0800  

    Works fine. Thank you very much.
    I don't know why, but I see the following warning in the logcat, but I am
    able to get the keys..
     
    01-30 21:44:02.860: W/keystore(188): Could not read CACERT_<alias>

     

    Jeff Sharkey <jsharkey@google.com> Jan 30 09:08AM -0800  

    Yep, you're right that checking FLAG_SUPPORTS_WRITE is the best way to
    check if a write is allowed.
     
    If you're really looking to focus on writing data, then
    ACTION_CREATE_DOCUMENT might be a better fit, since it also lets the user
    select an existing file, and it filters to only allow selection of
    documents that have FLAG_SUPPORTS_WRITE set.
     
    I'm thinking that allowing an app to request filtering of read-only
    documents during a OPEN_DOCUMENT request would lead to user confusion
    because of the inconsistency between apps. (For example, a user would
    still expect to open a read-only document for viewing purposes.) If a user
    then tried saving changes to a read-only document, it makes sense for the
    app to use CREATE_DOCUMENT to ask them to save the modifications somewhere
    else.
     
    Hope this helps. :)
     
    j
     
     
     
    --
    Jeff Sharkey
    jsharkey@android.com

     

    Dave Smith <dasmith1284@gmail.com> Jan 30 08:54PM -0800  

    Thanks for the thoughts, Jeff.
     
    I understand your reasoning, so perhaps the best course of action is to
    modify the example documentation. The "Edit a document" section of the SAF
    Guide
    (https://developer.android.com/guide/topics/providers/document-provider.html#edit)
    states that to "edit a text document in place", the correct choice is
    ACTION_OPEN_DOCUMENT. Based on what you are saying, since
    ACTION_CREATE_DOCUMENT allows you to pick an existing file, that is the
    better choice for "in place editing".
     
    The guide should probably either be changed to reflect
    ACTION_CREATE_DOCUMENT for editing, or to indicate that using
    ACTION_OPEN_DOCUMENT should include a branch check on FLAG_SUPPORTS_WRITE
    to determine if the edit can happen in place, or if ACTION_CREATE_DOCUMENT
    will need to be used anyway to create a new file for the edit changes.
     
    Thanks again,
    Dave Smith
    @devunwired
     

     

    Lox <laurent.dinclaux@gmail.com> Jan 30 06:52PM -0800  

    Hello,
     
    Looking here to the APi doc at the UiModeManager class I noticed there is a
    way to trigger the device into night mode. Is there any effect of that
    Night mode to stock android ? When I turn it on I can't see any difference
    ...
     
    Also I have noticed that function to trigger the DeskDock mode are missing.
    Why? Have you planned to implement it ? Some apps with root access do
    manage to trigger it, do you know how ?
     
    Regards

     

    dashman <erjdriver@gmail.com> Jan 30 03:14PM -0800  

    I've got a service class that runs in the background.
     
    I'd like to make calls from my main activity to the service object.
     
    In the Activity.onCreate() method - if the service is not running - i'd
    like to start it.
     
    The way i did it - was in the Service.onCreate() method - i set a static
    variable to self (i.e. this).
     
    In the Activity.onCreate() - i check this variable and if it's null - start
    the service.
     
     
    Unfortunately it's not working.
     
    I killed the app but not the service - verified in the phone settings apps
    page.
     
     
    Everytime i start the app - this variable still seems to be null.
     
     
    yes the variable is static.
     
    It's almost as if the system is killing the service and doing a clean start
    of the app.
     
     
    Any help?
     
     
    the Service.onStartCommand() mehtod returns START_STICKY.

     

    dashman <erjdriver@gmail.com> Jan 30 03:31PM -0800  

    After doing some testing i found this.
     
     
    If I delete an app from the app list - the system deletes the app and also
    the associated
    service.
     
    It then takes about 10-30 seconds for the service to be restarted by the OS.
     
    So if i start my app before the system has a chance to start the service -
    my app starts it
     
    (even though I thought that the service would not have been killed by the
    OS).
     
     
    Incidentally, I also noticed that when the service is stopped by the OS -
    it does not
    call the Service.onDestroy().
     
     
    Are my above findings/observations correct???

     

    Goutom <goutom.sust.cse@gmail.com> Jan 30 01:50PM -0800  

     

    xrd <xrdawson@gmail.com> Jan 30 09:58AM -0800  

    OK, so I used "sudo iosnoop | grep studio" to trace the system calls made
    by Android Studio. I see several files which it opens and wonder if one of
    these might be it:
     
    ~/Library/Saved Application
    State/com.google.android.studio.savedState/data.data
    ~/Library/Saved Application
    State/com.google.android.studio.savedState/windows.plist
     
    ~/Library/Saved Application
    State/com.google.android.studio.savedState/window_1.data
     
    I can dump the plist file with this command:
     
    plutil -convert xml1 -o - ~/Library/Saved\ Application\
    State/com.google.android.studio.savedState/windows.plist | less
    But nothing about saved passwords there.
     
    Anyone know how to read a .data file created by Android Studio (perhaps an
    IntelliJ format)? Difficult to search on Google and get anything
    interesting. The file starts with the characters 'NSCR1000' and those are
    repeated several times through the file.
     
    Chris
     
    On Wednesday, 29 January 2014 12:16:44 UTC-8, xrd wrote:

     

    dashman <erjdriver@gmail.com> Jan 30 05:03AM -0800  

    Testing out a small geo-fence app.
     
    it seems to work with mock locations and app in foreground.
     
    but it's not working w/ real data locations.
     
     
    the fence trigger is reported by Google API to an IntentService
    sub-class.
     
    My app is running in the background - would that cause not
    receiving the fence trigger intent.

     

    dashman <erjdriver@gmail.com> Jan 30 07:08AM -0800  

    Same app - tested on a phone with Android 4.1 - triggers the geofence events
     
    Same app tested on an Android 4.4 - does not trigger!!
     
    I've got this in the manifest file
     
    <uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="19" />
     
     
    Incidentally, when i'm testing with mock locations on the 4.4 device,
    if i don't make the following call when creating a new location - events
    don't trigger
     
    newLocation.setElapsedRealtimeNanos( SystemClock.elapsedRealtimeNanos() );
     
    this was introduced in API 17.
     
    i've got a feeling my problem has to do with this call - but in non-mock
    operations
    the location object is created by the system.

     

    F4L|{0 <simone.dolciotti@gmail.com> Jan 29 11:50PM -0800  

    HI
     
    I have some problem to emulate card with android 4.4.
    has someone some example for learn to use this functionality?
     
    I read this article
    http://developer.android.com/guide/topics/connectivity/nfc/hce.html#, but I
    don't understand how HCE work exactly. if the HCE create a secure area or
    no. if yes how manage this.
     
    thanks for support

     

    Nikolay Elenkov <nikolay.elenkov@gmail.com> Jan 30 04:57PM +0900  

    > http://developer.android.com/guide/topics/connectivity/nfc/hce.html#, but I
    > don't understand how HCE work exactly. if the HCE create a secure area or
    > no. if yes how manage this.
     
    There is nothing secure about HCE itself. Unlike with real smartcards or
    the embedded secure element (SE) element found in some Android
    devices all processing is done inside of a regular Android app. As such,
    it is subject to the same attacks. For example, if you have root access
    you can dump the memory of the app that implements HCE and obtain
    whatever information it is processing (cryptographic keys, credit card numbers,
    etc.) If you need to store stuff you use with HCE securely, you need to
    implement your own security. You can use password based encryption,
    the device keystore service, or offload all sensitive processing to a
    server.
     
    Here's an example that uses keys stored in the device keystore
    to emulate a PKI card:
     
    https://github.com/nelenkov/virtual-pki-card/tree/master/hce-pki

     

    F4L|{0 <simone.dolciotti@gmail.com> Jan 30 12:31AM -0800  

    thanks for reply.
    My idea is emulate, for now, a Mifare 1K card for transport application.
    it's possible with secure element. I think that I have confusion about it.
     
    Il giorno giovedì 30 gennaio 2014 08:57:53 UTC+1, Nikolay Elenkov ha
    scritto:

     

    Nikolay Elenkov <nikolay.elenkov@gmail.com> Jan 30 05:35PM +0900  

    > thanks for reply.
    > My idea is emulate, for now, a Mifare 1K card for transport application.
    > it's possible with secure element. I think that I have confusion about it.
     
     
    Please reply to list.
     
    You cannot emulate Mifare with Android's HCE. You can only emulate APDU
    based communication, which is on a higher level than Mifare.
     
    You can emulate Mifare with an actual secure element, if supported,
    and if you have the keys to manage it (that is what older editions of
    Google Wallet do in order to emulate some loyalty cards, etc.)

     

    Ruplekha Verma <rvangelife@gmail.com> Jan 30 01:26PM +0530  

    Kindly delete my all discussion made in your group.
     
    *Ruplekha Verma*
     
     

     

    Daniel Rindt <daniel.rindt@gmail.com> Jan 29 11:32PM -0800  

    Am Donnerstag, 30. Januar 2014 00:01:56 UTC+1 schrieb TreKing:
    > and not have the text saved from the original.
     
    > The simple solution here is to remove checking if the dialog already
    > exists and just only create the dialog if savedInstanceState is null.
     
    Thanks for your message and efforts with my problem. I am really thankful
    for that.
    I've in this example neglect that onCreate() behave as you mentioned. I've
    adjusted to code and shows like this just for testing:
     
    public class DialogTestActivity extends Activity implements OnClickListener
    {
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dialog_test);
    ((Button) findViewById(R.id.button1)).setOnClickListener(this);
    }
     
    @Override
    public void onClick(View v) {
    AskForNameDialog d = AskForNameDialog.newInstance(new
    OnNameSetListener() {
     
    @Override
    public void onNameSet(AskForNameDialog dialog, String name) {
    }
     
    }, getString(R.string.enter_manufacturers_name));
    d.show(getFragmentManager(), "dialog");
    }
     
    }

    added a simple button (layout omitted here just linear with a button) and
    this should open the dialog. It behaves exactly in the same manner as
    already mentioned.
    I have tried really all the stuff i found belonging to my problem, read the
    android developer blog about this, and all this really not solve this.
     
    Thank you for your help
    Daniel

     

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

[android-developers] Digest for android-developers@googlegroups.com - 4 Messages in 3 Topics

Comments: (0)

Group: http://groups.google.com/group/android-developers/topics

    TreKing <trekingapp@gmail.com> Jan 29 05:01PM -0600  

    You are creating a new Dialog in your onCreate method. onCreate gets called
    both the first time the app is run (with savedInstanceState set to null)
    and after an orientation (configuration) change, with savedInstanceState
    set to the last saved state Bundle.
     
    In the latter case, the system also automatically re-creates the original
    dialog fragment as part of the lifecycle. Therefore, the system is
    recreating the dialog for you and you are additionally creating a new
    instance.
     
    You explicitly check if the dialog already exists in the fragment manager,
    which would be the original instance with the text before orientation
    change, and you replace it with the new instance, which would be brand new
    and not have the text saved from the original.
     
    The simple solution here is to remove checking if the dialog already exists
    and just only create the dialog if savedInstanceState is null.
     
     
     
    --
     
    -------------------------------------------------------------------------------------------------
    TreKing <http://sites.google.com/site/rezmobileapps/treking> - Chicago
    transit tracking app for Android-powered devices

     

    dashman <erjdriver@gmail.com> Jan 29 07:47AM -0800  

    My app enables lock-screen.
     
    Have all the device-admin privs etc.
     
    When i enable it - i just get the slider - not the password prompt.
     
     
    devicePolicyManager.setPasswordQuality(
    componentName,
    DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED );
     
    devicePolicyManager.setPasswordMinimumLength(componentName, 4);
     
    boolean result = devicePolicyManager.resetPassword("1234",
    DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
     
    Log.i( TAG, "enable-lock result=" + result);
     
    result is good.

     

    dashman <erjdriver@gmail.com> Jan 29 01:12PM -0800  

    my bad on this...I was pressing the power button to lock the screen for
    testing - and in phone settings - it wasn't enabled.
     
    so the lock feature seems to be working.
     
     
    now the opposite problem - i'm also trying to unlock the screen
    programmatically.
     
    devicePolicyManager.setPasswordMinimumLength( componentName, 0 );

    boolean result = devicePolicyManager.resetPassword( "",
    DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY );
     
    but after a locking the screen - i try to unlock and a slide-to-unlock
    prompt opens
    up. shouldn't it go straight to the last screen - i.e. no slide-to-unlock
    prompt.
     
     
     
     
     
     
     
     
     
    On Wednesday, January 29, 2014 10:47:15 AM UTC-5, dashman wrote:

     

    xrd <xrdawson@gmail.com> Jan 29 12:16PM -0800  

    Android Studio recently updated itself and now builds my APK with debugging
    symbols, and Google Play rejects the APK when I upload it.
     
    I also recently moved, so the paperwork with my saved key store password is
    buried somewhere.
     
    Is there a way to retrieve the saved keystore password and key password
    from Android Studio preferences? I have tried grepping through files in
    ~/Library/Preferences/ as well as dumping all the plists but don't see
    anything matching the password.
     
    Is there a way to dump the command line output of the gradle command run
    via Android Studio as I assume it is provided to gradle, right?
     
    Any other creative ways to do this? Please save me from digging through all
    the junk piled up in my basement, I might die in an avalanche...
     
    Chris

     

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

[android-developers] Digest for android-developers@googlegroups.com - 4 Messages in 4 Topics

Comments: (0)

Group: http://groups.google.com/group/android-developers/topics

    rukiman <rukshanf@optushome.com.au> Jan 28 03:24PM -0800  

    In the Android client I call
     
    public void abortCurrentRequest() {
     
    if(mCurrentRequest != null) {
     
    mCurrentRequest.abort();
     
    }
     
    }
     
     
    where mCurrentRequest is of type HttpPost.
     
     
    However my PHP REST script still continues to run even though the request
    was aborted. I have not turned on ignore_user_abort() in PHP and I have
    also tried to connection_aborted() to detect if the request was aborted
    without any success.
     
     
    I have also tried changing the Android client to do this
     
     
    mHttpClient.getConnectionManager().shutdown();
     
     
    Once again the PHP REST script carries on. I need to be able to detect that
    the current REST API was aborted. The API can take about 30 seconds to run
    and if the user aborted it on the client, I want my PHP script to know
    about it.
     
     
    I am using Android 4.2.2 and PHP 5.4.12.
     
     
    Any ideas? I do not want to introduce a new REST API to detect that the
    user is cancelling. That seems very messy.

     

    Daniel Rindt <daniel.rindt@gmail.com> Jan 28 11:52AM -0800  

    Dear readers,
     
    i experienced a double call to onCreateDialog also to onCreateView in my
    project.
    here is my activity code:
    public class DialogTestActivity extends Activity {
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     
    AskForNameDialog d = AskForNameDialog.newInstance(new
    OnNameSetListener() {
     
    @Override
    public void onNameSet(AskForNameDialog dialog, String name) {
    }
     
    }, getString(R.string.enter_manufacturers_name));
     
    this.showMyDialog(d);
    }
     
    private void showMyDialog(DialogFragment d) {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    Fragment prev = getFragmentManager().findFragmentByTag("dialog");
    if (prev != null) {
    ft.remove(prev);
    }
    ft.addToBackStack(null);
    d.show(ft, "dialog");
    }
     
    }
     
    here is the dialog:
    public class AskForNameDialog extends DialogFragment {
     
    protected static final String TAG =
    AskForNameDialog.class.getSimpleName();
     
    private OnNameSetListener mCallback;
    private String mMessage;
     
    public AskForNameDialog() {
    }
     
    private AskForNameDialog(OnNameSetListener listener, String message) {
    mCallback = listener;
    mMessage = message;
    }
     
    public static AskForNameDialog newInstance(OnNameSetListener listener,
    String message) {
    AskForNameDialog f = new AskForNameDialog(listener, message);
    Bundle b = new Bundle();
    b.putBoolean("blah", false);
    f.setArguments(b);
    return f;
    }
     
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    int padd = convertDpToPixel(20, getActivity());
    final EditText txt = new EditText(getActivity());
    txt.setSingleLine();
     
    final AlertDialog ad = new AlertDialog.Builder(getActivity())
    .setTitle(mMessage)
    .setPositiveButton(android.R.string.ok, null)
    .create();
    ad.setView(txt, padd, padd, padd, padd);
     
    ad.setOnShowListener(new DialogInterface.OnShowListener() {
     
    @Override
    public void onShow(DialogInterface dialog) {
     
    Button b = ad.getButton(AlertDialog.BUTTON_POSITIVE);
    b.setOnClickListener(new OnClickListener() {
     
    @Override
    public void onClick(View v) {
    if (!FormUtils.isValid(txt, 3, 50,
    R.string.input_error_min_max_letters))
    return;
     
    mCallback.onNameSet(AskForNameDialog.this,
    txt.getText().toString());
    dismiss();
    }
    });
    }
    });
     
    return ad;
    }
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setCancelable(false);
    }
     
    public static int convertDpToPixel(float dp, Context context) {
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    return (int) (dp * (metrics.densityDpi / 160));
    }
     
    public interface OnNameSetListener {
     
    public void onNameSet(AskForNameDialog dialog, String name);
     
    }
     
    }
     
    I'm using exactly the same code in another project and there the dialog is
    working well.
    Explaining what happened:
     
    1. Dialog properly appears with the input field
    2. enter some letters in the EditText view
    3. do an orientation change
    4. the dialog appear but without the previous entered text
     
    In the debugger i put a breakpoint on onCreateDialog() and see that it
    called first containing savedInstanceState with data
    and immediately after the the method is called again with
    savedInstanceState=null.
     
    This happens on every api level. I appreciate your feedback and thanks in
    advance for your support!
    Daniel

     

    Nobu Games <dev.nobu.games@gmail.com> Jan 28 07:46AM -0800  

    I'm not sure if this is the cause but I noticed that your sample HTML page
    is missing a view port meta tag, which is commonly used in mobile web
    pages. The rendering logic is a bit different in mobile browsers due to the
    smaller screen size of mobile devices. Here is an explanation of mobile web
    browser view ports: http://www.quirksmode.org/mobile/viewports2.html
     
    You have to add a meta tag to your HTML page header that tells the mobile
    browser something along the lines that the view port has to match the
    actual device screen width. Here is a Mozilla documentation page that
    explains it very well:
     
    https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag
     
    On Saturday, January 25, 2014 8:33:03 AM UTC-6, Cayce wrote:

     

    Marina Cuello <marina.eariel@gmail.com> Jan 28 01:38PM -0200  

    I tried your "Eve" plugin when and it works like a charm. I had a lot of
    libraries, some even using others, and it got them ok.
    If you can, add an option/function to add a "res" folder automatically if
    there is none. Some libraries have an empty one, and when you import
    projects you cloned from Git (where empty folders are ignored) you get no
    folder at all. After importing with your plugin, you see red marks all
    over the place. It scared me for a second :P
     
    Marina
     
     

     

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

[android-developers] Digest for android-developers@googlegroups.com - 8 Messages in 5 Topics

Comments: (0)

Group: http://groups.google.com/group/android-developers/topics

    Alexander Osmanov <alex.osmanov.88@gmail.com> Jan 27 03:31PM -0800  

    Hi,
     
    I am writing a Gradle plugin that would add compile dependencies based on
    values I declare in extension. More specifically in extension I declare a
    version of a lib I want to be added. So like this:
     
    awslibs {
    awslib1 {
    version '1.0.0'
    }
    }
     
    However in plugin "apply" method this extension object is not yet
    populated, i. e. empty. I try to read it's values in afterEvaluate and add
    dependencies. It works great with Gradle (i. e. command line gradle run)
    but not with Android studio. I suspect it fetches dependecies only once and
    before I add new one.
     
    Is there a way to add dependency so AS could see it or is there any API for
    adding dependencies planned (similar to recent API for adding generated
    code folders to model)?
     
    Thanks,
    Alex.

     

    Rahul Kaushik <rahulkaushik85@gmail.com> Jan 27 06:28PM +0530  

    i am creating tabhost dynamically i want all the tabs to be fixed and
    framelayout tob scrolling
    Please suggest
     
    Thanks
    RK

     

    TreKing <trekingapp@gmail.com> Jan 27 03:09PM -0600  


    > i am creating tabhost dynamically i want all the tabs to be fixed and
    > framelayout tob scrolling
    > Please suggest
     
    Please explain your problem in more detail.
     
    -------------------------------------------------------------------------------------------------
    TreKing <http://sites.google.com/site/rezmobileapps/treking> - Chicago
    transit tracking app for Android-powered devices

     

    12169 <ashish.acet@gmail.com> Jan 27 01:06AM -0800  

    Hi,
     
    is there any way to check ,mobile data on/off in the settings.
     
    On Sunday, January 26, 2014 11:22:19 PM UTC+5:30, 12169 wrote:

     

    lbendlin <lutz@bendlin.us> Jan 27 04:22AM -0800  

    What do you actually need to accomplish? Normally you would try to reach a
    well known host like 8.8.8.8 and if that succeeds you're connected (on
    whatever network connection).
     
    On Monday, January 27, 2014 4:06:58 AM UTC-5, 12169 wrote:

     

    12169 <ashish.acet@gmail.com> Jan 27 08:41AM -0800  

    Hi,
     
    I just want to check ,mobile data on/off in the device settings.
     
    On Sunday, January 26, 2014 9:52:19 AM UTC-8, 12169 wrote:

     

    Rahul Kaushik <rahulkaushik85@gmail.com> Jan 27 04:42PM +0530  

    I am dynamically creating tabs and there contant but i am not to able
    scroll the cotent of tabs pls sugges below is my code
     
    TabHost tabHost ;
    TabSpec ts1 = tabHost.newTabSpec(value);
    TabWidget tabWidget = new TabWidget(frmAudit.this);
    tabWidget.setId(android.R.id.tabs);
    tabWidget.setBackgroundColor(Color.BLACK);
     
    tabHost.addView(tabWidget, new LinearLayout.LayoutParams
    (
    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     
    FrameLayout frameLayout = new FrameLayout(frmAudit.this);
    frameLayout.setId(android.R.id.tabcontent);
    frameLayout.setPadding(4, 65, 4, 0);
    frameLayout.setMeasureAllChildren(true);
    frameLayout.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
    //frameLayout.setMinimumHeight(m_nScreenH);
    tabHost.addView(frameLayout, new LinearLayout.LayoutParams(
    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     
    tabHost.setup();
    ts1.setIndicator(value);
    ts1.setContent(new TabHost.TabContentFactory()
    {
     
    TableLayout panel;
     
    public View createTabContent(String tag)
    {
     
    EditText ttfUseridComment = new EditText(frmAudit.this);
    ttfUseridComment.setPadding(2, 12, 0, 4);
    ttfUseridComment.setHeight(84);
    ttfUseridComment.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
    LayoutParams.MATCH_PARENT));
    panel.addView(ttfUseridComment);
    ------------------------->>>>above control needs to scroll
     
    }
     
    }
     
    try
    {
     
    tabHost.addTab(ts1);
    }
     
    Thanks
    RK

     

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

[android-developers] Digest for android-developers@googlegroups.com - 9 Messages in 5 Topics

Comments: (0)

Group: http://groups.google.com/group/android-developers/topics

    Adam Ratana <adam.ratana@gmail.com> Jan 26 04:24PM -0800  

    Just got bit by this when I updated the target-sdk from 16. Prior to
    that this was not happening for my S4 and Note 3 users.
     
    On Wednesday, October 2, 2013 1:39:12 PM UTC-4, String wrote:

     

    Adam Ratana <adam.ratana@gmail.com> Jan 26 04:48PM -0800  

    Also, found a reasonable alternative to the solutions here in the chromium
    source - looks like from a google search this had to be patched there, too
    --
     
    https://src.chromium.org/viewvc/chrome/trunk/src/content/public/android/java/src/org/chromium/content/browser/DeviceMotionAndOrientation.java?pathrev=246398
     
    See starting line 194. When people discuss fragmentation, it's kind of
    funny because it's things like this that I find bothersome, things breaking
    through no fault of our own, and only on specific devices! Good thing this
    broke on flagship devices, otherwise it might be a struggle for myself or
    others who come across this to make sense of it and deploy a quick fix...
     
    On Sunday, January 26, 2014 7:24:41 PM UTC-5, Adam Ratana wrote:

     

    12169 <ashish.acet@gmail.com> Jan 26 12:00AM -0800  

    Hi,
     
    I have an application in which i open the device settings page. when i
    open these pages i want to know about the position of the elements on the
    settings pages.
     
    e.g when i open the setting page Flight Mode, i want to get the position of
    this elements on the screen.
    any help?

     

    TreKing <trekingapp@gmail.com> Jan 26 03:17PM -0600  


    > e.g when i open the setting page Flight Mode, i want to get the position
    > of this elements on the screen.
     
     
    I highly doubt there is a official facility to accomplish this.
     
    -------------------------------------------------------------------------------------------------
    TreKing <http://sites.google.com/site/rezmobileapps/treking> - Chicago
    transit tracking app for Android-powered devices

     

    Kristopher Micinski <krismicinski@gmail.com> Jan 26 05:12PM -0500  

    Generally there aren't any APIs that will let you access information
    about other applications. This is mostly for security reasons. So
    the answer to your question is no.
     
    Kris
     
     

     

    12169 <ashish.acet@gmail.com> Jan 26 09:52AM -0800  

    Hi,
    I want to check whether mobile data is on/off, and for this I use the below
    code
     
    ConnectivityManager cm = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);Class cmClass = Class.forName(cm.getClass().getName());
    Method method = cmClass.getDeclaredMethod("getMobileDataEnabled");
    method.setAccessible(true); // Make the method callable
    // get the setting for "mobile data"
    mobileDataEnabled = (Boolean) method.invoke(cm);
     
     
    However, this code does not work on some devices, and throws an exception that no such method exists. I have found it is not working in Android 4.1.x. Why is it throwing this execption, and how can I fix it?

     

    TreKing <trekingapp@gmail.com> Jan 26 03:16PM -0600  


    > However, this code does not work on some devices, and throws an exception
    > that no such method exists. I have found it is not working in Android
    > 4.1.x. Why is it throwing this execption, and how can I fix it?
     
     
    This is the problem with copying and pasting code off the internet without
    understanding what it does.
     
    As for your question, you can just look up the exception in question:
    http://developer.android.com/reference/java/lang/NoSuchMethodException.html
     
    This is not really something you can "fix".
     
    -------------------------------------------------------------------------------------------------
    TreKing <http://sites.google.com/site/rezmobileapps/treking> - Chicago
    transit tracking app for Android-powered devices

     

    Ben Brosius <benbrosius@gmail.com> Jan 26 10:16AM -0800  

    I've been working on adding music visualization to my live wallpaper using
    the Visualizer class. The visualizer works as expected when music starts
    playing. However whenever I switch to the next song, I get empty waveforms
    back from the visualizer. I've downloaded several visualizers from the
    market and they all have the same behavior. Is this a known bug for the
    visualizer and is there a work around available.

     

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

[android-developers] Digest for android-developers@googlegroups.com - 7 Messages in 7 Topics

Comments: (0)

Group: http://groups.google.com/group/android-developers/topics

    Doug <beafdefx@gmail.com> Jan 25 03:48PM -0800  

    Try using a Javascript library (such as jQuery) to compute pixels that are
    understood internally by the WebView rather than trying to convert
    something from Android's reckoning of pixels. You could have it trigger on
    window resize to compute and set the size that corresponds to the relative
    amount of space you want.
     
    Doug
     
    On Friday, January 24, 2014 3:18:04 PM UTC-8, Cayce wrote:

     

    gvi70000 <gvi70000@gmail.com> Jan 25 11:48AM -0800  

    Hell community,
     
    I want to start development of applications under Android and the firs that
    i want to do is to create similar application as i done with Arduino.
     
    Do to this i bought a Olimex A20 board with 4GB NAND
    (https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-MICRO-4GB/open-source-hardware)
    The first thing that i want to do is to include in Android image support
    for INNOLUX AT070TN92 TS display.
     
    Can someone tell me what i have to install/configure in order to make/test
    the driver for this LCD? Programming tools and after how to create and test
    LCD drivers.
    I use Win 7 x64 and Ubuntu 12.04 x64
     
    Thank you

     

    Cayce <cayce@cayceweb.com> Jan 25 06:33AM -0800  

    I have an app that delivers screen content in an html format, pulled from a
    database. I need to work in percentages for width & height of elements that
    make up the display, to accommodate various devices. I can't get the height
    % to work in any components, no matter what I try. I've reduced the layout
    to the simplest format for troubleshooting and am including it here. I've
    assigned background colors to elements so as to see the effects of code
    modifications.
    In the screenshot I've attached, the yellow background is part of the
    background art. The yellow HTML color attribute is hidden behind the red
    Body color, but should be showing at 100% height if working properly. This
    is my display code, simplified:
     
    <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
    <html lang="en">
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
    *{ margin:0; padding:0;}
    html { width:100%; min-height:100%; background:yellow;}
    body { width:100%; min-height:100%; background:red;}
    </style>
    </head>
    <body>

    <table style="height: 100%; background:white;">
    <tr >
    <td width="275" height="200" bgcolor="blue"></td>
    <td width="275" height="200" bgcolor="brown"></td>
    </tr>

    <tr>
    <td colspan="2" width="450" height="300" bgcolor="green"></td>
    </tr>

    <tr>
    <td colspan="2" width="450" height="300" bgcolor="black"></td>
    </tr>
    </table>
    &nbsp;
    </body>
    </html>
     
    Screenshot:
     
    <https://lh5.googleusercontent.com/-qeBx8WK7OkU/UuPKxkfvUjI/AAAAAAAAACE/RiuN2_1x2Dc/s1600/CSS_Height_Example.jpg>
     
    Thanks for any help getting through this.
     
    Cayce

     

    dashman <erjdriver@gmail.com> Jan 25 05:14AM -0800  

    Looking into the Play Services Location API.
     
    There's a concept of geofence.
     
    Is there a call to find out (at any given time) whether you're
    inside a geofence - as opposed to just enter/exit transitions
     
    For example - at app startup - i'd like to know wx in any
    geofence.
     
    Thanks.

     

    Build Account <newandroid66@gmail.com> Jan 25 12:36AM -0800  

    Any update..more ? any Google guys who connected to?
     
    2014년 1월 18일 토요일 오후 3시 57분 34초 UTC+9, Build Account 님의 말:

     

    Michael Leung <michaelchikit@gmail.com> Jan 25 04:42PM +1000  

    Hi all ,
    i found navigation drawer is in android v4 support lib. If i write an app
    for android 4+. I should use a action bar drawer. Am i right?
    Regards,
    Michael Leung
    http://www.itblogs.info

     

    pskr <pskrtech@gmail.com> Jan 24 10:32PM -0800  

    Few more questions reg. selling through play store.
    - If a user buys the app on one device, it sounds like it can be used on
    other devices without any purchase.
    - If I sell my 'license' as a managed in-app item, the same applies. The
    user can use it on any other device.
     
    Looks like the managed purchase is per user account and not per device.
    Since I may need to pay licensing fees to others on per-device basis,
    selling paid version app and selling the license as managed item are not
    options for me. So, the only option seems to be - to sell the license as
    in-app unmanaged item.
     
    Which means, if the user uninstalls/clears app data, user must purchase it
    again. Google play servers won't store this info. If I have to allow user
    to use it on the device even after reinstall, I have to implement my own
    server to track the purchase!
     
    Looks like my own server is a must :-(
     
     
    On Friday, January 24, 2014 2:03:46 PM UTC-8, pskr wrote:

     

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.