.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
for 1000px height and 1000pix width it work, but for beyond
it,
it gives exception, appl force close.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All
, but there's no means for
other apps to discover what services are provided. Is it just me, or
does anyone else think this really limits the usefulness of this
feature?
-- Peter
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions
to
PackageManager.queryIntentActivities(), but I have not found a way to
make that work.
Thanks,
Richard
On Jan 30, 8:31 pm, Dianne Hackborn hack...@android.com wrote:
You shouldn't just look at what intents an app happens to use: unless
someone publishes official protocols, those should
, Dianne Hackborn hack...@android.comwrote:
I'll still say, if it hasn't been documented, then you probably have no
business using it.
If you want to go use private implementation details of the platform, you
can browse through the source code and look at the manifests of the apps.
That is all
the camera preview?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
like this but it is only a proof of concept.
Thanks
Lutz
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I
, Jan 31, 2009 at 7:38 PM, Raja Nagendra Kumar
nagendra.r...@gmail.com wrote:
Thank you for reply. Any good reason for doing it..
Most of the designs aim to assume reasonal defaults to min typing and
do more with less..
Regards,
Nagendra
--
Dianne Hackborn
Android framework engineer
by J2ME.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
and the spinner would show
Rose
Daffodil
but the code can get to
flwr1
flwr2
Sounds easy enough, right? Can anyone give me a quick code snippet
to get me there?
Thanks!
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I
Well you'll need to define dynamic theme. What specifically are you asking
about?
On Mon, Feb 2, 2009 at 1:58 AM, Paranoia zheny...@gmail.com wrote:
so android does not support dynamic theme, right?
do you guys have any plan to support it?
On Feb 2, 10:36 am, Dianne Hackborn hack
help appreciated!
Thanks,
Ayan
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer
be useful and
specifically how to get the above idea to work.
Cheers,
MB.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
, there is no permission
added, still the activity starts.
can anyone explain, why this is so.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions
.
Permission to send sms is set.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
to you, I have
looked everywhere for this information only to lead me here, still
confused.
sorry if this is in the wrong spot, his is just as close as I have
gotten to getting an answer(hopefully)
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send
) so SMS and Imap email will be an option ? All the
data i have is a plain text.
On Feb 2, 1:51 pm, Dianne Hackborn hack...@android.com wrote:
That would happen because Gmail is the only app on the device that knows
how
to execute the intent you have created.
On Mon, Feb 2, 2009
of stuff ...
app_30 157 2391484 12140 afe0c824 S
com.android.SingleLauncher
app_31 236 2390452 11580 afe0c824 S
com.android.TargetSL
Am I missing something here ?
-Dan
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please
.
The android,media is pre-built in the emulator. does any one know
how those preload packages are signed and how to set correct signature
(or keystore) in Eclipse ?
Thank you for the kindly helps
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private
Oh and this doesn't belong on android-developers because it is not related
to using the SDK. :)
On Mon, Feb 2, 2009 at 3:32 PM, Dianne Hackborn hack...@android.com wrote:
You need to build everything yourself, and sign it all with the same
certificate that you own. In the make files
device.
Since Android use the same linux kernel, I guess our kernel driver
should work...
Well, how about X11 module? does Android includes Xorg ? If not,
what's target we need to do for our original X11 module/driver?
Thanks.
-chueh8
--
Dianne Hackborn
Android framework engineer
hack
or in the
emulator all I get is ACTION_DOWN, never ACTION_MOVE or ACTION_UP.
HOWEVER, changing the return statement of onTouchEvent() to true
fixed it for me. Frustrating!
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have
the contents of the image
flashed on the phone?
I would like to do this so I can work with development images, but I
didn't want to mess with the factory image.
Thanks,
Aakash
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions
based applications in android?
Thanks,
Pooja
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
debug information for my final releases ?
I use Eclipse.
Thanks.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums
://code.google.com/android/reference/android/app/Instrumentation.html
Thanks in advance.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
ArrayAdapterString(this, R.layout.favs,
R.id.label, shows);
Thanks.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I
useful.
Look at the docs on Instrumentation, there are methods and such for this.
Sorry I don't have any specific example code handy, maybe someone else can
help.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have
!
With best wishes
Jerry Yang
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
/reference/java/lang/System.html#loadLibrary%28java.lang.String%29
Is this api not supported in Android SDK now?
Thanks
With best wishes
Jerry
*From:* android-developers@googlegroups.com [mailto:
android-develop...@googlegroups.com] *On Behalf Of *Dianne Hackborn
*Sent:* Wednesday, February
...@googlegroups.com] *On Behalf Of *Dianne Hackborn
*Sent:* Wednesday, February 04, 2009 12:09 PM
*To:* android-developers@googlegroups.com
*Subject:* [android-developers] Re: [android-developers]Using JNI to call
C lib on android platform
That API is part of the SDK, but native code
. AssetManager.applyStyle is package-protected
2. Theme.obtainStyleAttributes is hardcoded to use XmlBlock$Parser,
not just an AttributeSet
So what is the 'official' way?
Regards,
Richard.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private
-set password when he clicks on a specified folder.Sir I am
not getting any clue regarding how to get the event generated by
operating system when the user opens the folder.Or if there is any
such event generated at all.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
in Sweden -- http://www.sotrium.com/training.php
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see
it is efficient. is there any other method for do so?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can
or example
about this?
Appreciate for your help!
With best wishes
Jerry Yang
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted
=1000 /
Greetings,
DaRolla
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
though.. Are there any
options to pack the resources this way already..
As Android seems to run j2se.. I am assuming that such kind of runtime
memory is not an issue.
Regards,
Raja Nagendra Kumar,
C.T.Owww.tejasoft.com
--
Dianne Hackborn
Android framework engineer
hack
Oh btw there is one improvement we have in aapt for Cupcake to better
compress .png image files.
On Wed, Feb 4, 2009 at 2:24 PM, Dianne Hackborn hack...@android.com wrote:
Yep I think they are pretty compact in their current form. Note that the
resource table itself is not stored compressed
constructor
accepts an id? I only see ones that accept AttributeSets. Is there a
way to create an AttributeSet from an id?
Regards,
Richard.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time
, the media provider would run in a
separate process or
in the same process as the caller?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted
$BadTokenException: Unable to add window -- token
null is not for an application
The reason seems to be that the dialog is not used in a application
context (activity should be fine?)
Was there any way that can solve this problem? any advises will be
approciated!!!
Many thanks!
--
Dianne Hackborn
application to use only bottom half of
the screen? but the application need not know this !! It could use a
scroll bar in order to compensate for this reduced height !!
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have
, and return.
Question: Any ideas on how to get this to run without crashing?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
(savedInstanceState);
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(ActivityB);
setContentView(tv);
}
}
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have
with the arm-2007q3
toolset and I'm running the android emulator on windowsXP.
Thanks for any insight or suggestions on how to find a solution for
this!
jim anderson
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I
properly. Is there anyway to use android camera application without sd
card?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums
Context.getResources().getConfiguration()
On Thu, Feb 5, 2009 at 1:57 PM, Layeeq nlah...@gmail.com wrote:
Hi,
1. How do i find the current orientation of the phone (portrait or
landscape) ?
2. How do i find the slider position ?
Thanks,
Layeeq
--
Dianne Hackborn
Android framework
TextUtils.concat().
On Thu, Feb 5, 2009 at 4:20 PM, Ivan Soto ivanso...@gmail.com wrote:
Is it possible to merge spannables?
like
Spannable spa = null;
spa = Html.fromHtml(text text b asds/b);
spa = spa + Html.fromHtml(asdasdasd);
Thanks
--
Dianne Hackborn
Android framework
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
.
But now I am paying the cost of decompression while loading those assets.
I hope the Android platform can improve the compression of the apk
file itself in a subsequent release.
Thanks
Inder
On Wed, Feb 4, 2009 at 2:25 PM, Dianne Hackborn hack...@android.com
wrote:
Oh btw there is one
by
the app? Preferences? SQLite databases? Anything else? The data
storage value seems to gradually grow over time while using the app...
from initial size of 76K to nearly a meg.
On Feb 6, 11:51 am, Dianne Hackborn hack...@android.com wrote:
Unfortunately it's a little tricky, because only
you for free
no less), it is good to have an idea of what you are getting miffed about.
:}
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted
...
Romain Guy Android framework engineer
romain...@android.com
Note: please don't send private questions to me, as I don't have
time
to provide private suppo...
--
Jean-Baptiste M. JBQ Queru
Android Engineer, Google.
--
Dianne Hackborn
Android framework engineer
, 2009 at 5:57 PM, pinguin e...@vinacom.de wrote:
Can i port SIP stack written in C++ to android and let it running as
service in kernel ?
and the GUI will communicate with SIP stack through JNI ?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't
://commonsware.com
_The Busy Coder's Guide to Android Development_ Version 2.0 Available!
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums
. an answering
machine within the current framework (standard sdk), because direct access
to acceptCall and hangup methods is missing.
Best
G. Mudersbach
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have
slow
running on the G1 so it's pretty useless.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can
,
Ashrotronics
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
;
if(DEV_MODE){
// log stuff, compute debug values etc.
}
---
TIA.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I
...@android.com
Note: please don't send private questions to me, as I don't have time
to provide private support. All such questions should be posted on
public forums, where I and others can see and answer them- 隐藏被引用文字 -
- 显示引用的文字 -
--
Dianne Hackborn
Android framework engineer
hack
source code ,then the generated
new monkey tool can continue running after i close the shell,am i
right ??
On Feb 9, 12:15 pm, Dianne Hackborn hack...@android.com wrote:
Um, don't close the shell you are running the monkey on. The monkey
command
prints its result data there so it would
();
Configuration conf = res.getConfiguration();
conf.locale = Locale.GERMANY;
res.updateConfiguration(conf, dm);
firstline= res.getString(R.string.firstline);
On Jan 26, 9:09 pm, Dianne Hackborn hack...@android.com wrote
it at runtime? The
class name and path would be known.
I have been using the Class.forName command for the standard routines
but I don't know how (if) this will work with classes outside of the
application.
Many thanks,
Gavin
--
Dianne Hackborn
Android framework engineer
hack...@android.com
probably shouldn't have said anything. :}
On Mon, Feb 9, 2009 at 12:39 PM, Evgeny V evgen...@gmail.com wrote:
So, what can be a best way to restart the app except to ask user restart
manually?
Thanks,
Evgeny
On Mon, Feb 9, 2009 at 9:49 PM, Dianne Hackborn hack...@android.comwrote:
You
using the 2D graphics
API's which have very little explained.
Thanks,
Sam
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
AndroidManifest.xml. What ACTION does it
use to identify the possible choices (gallery, wallpaper)? Is this
PICK_ACTION?
Thanks, Layeeq
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private
this application as the
default activity
Thanks in advance,
Sei
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I
:-/
Any advice or pointers would be greatly appreciated :-)
Cheers
Lorenz
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
by using the full screen.
Is there a way to limit the sub actitivies to a parent activities
bounds, and keep (in my case) the rot Tabs visible?
Where shall I look?
Cheers!
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me
:
Notification.DEFAULT_SOUND
for quite some time with great success. When I replace that with:
Notification.DEFAULT_ALL
the program crashes when the notification is called. What's up with
that?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private
a message into its MessageQueue immediately
after Handle is created so it can start handling them.
What's the correct pattern here?
Thanks
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private
...@gmail.com wrote:
Dianne,
But how do I get the handle?
My handle is created in run(). From the main thread of control, how
do I know
when run() finished creating my handle?
Thanks
On Feb 9, 6:18 pm, Dianne Hackborn hack...@android.com wrote:
You don't need to know, as long as you
these activities
as separate, individual entities?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer
of a
Dev2 I think I'd rather wait.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see
...@gmail.com
[In theory, theory and practice are the same. In practice, they are not.]
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted
., is there a workaround?
Thanks
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
API.
Where do I find information on the master SDK?
There's no JavaDoc in the SDK 1.1 of this package. Maybe there is an
Intent though?
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide
.
On Feb 10, 2:57 pm, Dianne Hackborn hack...@android.com wrote:
The answer is you don't use AbsoluteLayout. Seriously. It is trivial to
place a button at the bottom right corner of the screen with various
other
layout managers, and those will take care of doing the right thing
are asking for such a very simple thing. I'd really like to
understand.
It's a Java thing. ;) You VILL fit ze paradigm! Resistance is futile!
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time
install it?
If not now, will such a policy be enforced in the future?
Thanks
- Mattaku
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted
...@gmail.com
Hi, I am trying to make a simple application to parse the XML using
SAXParser but it is not finding the xml file which I have added in the
project. How and where should I add the XML file?- Hide quoted text -
- Show quoted text -
--
Dianne Hackborn
Android framework
the phone to enter landscape mode on running my
application?
Thanks,
Andrew :)
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums
. public int getKeyCode(char letter) {...}? I had a look
but can't find it and I can't find a way to make Autocomplete start
filtering from predefined input in the box, so I'm emulating key
inputs to make it do this.
thanks for any help.
--
Dianne Hackborn
Android framework engineer
hack
SystemClock.uptimeMillis() is generally what you want to use.
On Wed, Feb 11, 2009 at 5:29 AM, jj jagtap...@gmail.com wrote:
how to count time in android, e.g player start the game how t count
time from start game to end game, I am what r classes to set time and
count.
--
Dianne
at this view, instead of navigating
to the previous screen, application itself gets closed. Could anybody
please let me know how to go back to previous screen.
Thanks in andvance,
Naina
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions
:
Is it possible to have a vertical SeekBar? I would want this for a
tilt control slider.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted
the OTAed 1.1 on my phone for quite a while, with no trouble.
It would certainly be interesting to know what is going on with your phone,
however your posts so far indicate that you aren't really interested in that
but just want to yell. Which is fine, but it isn't going to help anyone
much.
--
Dianne
:
mySurfaceView.getHolder().setFormat(PixelFormat.RGBA_);
The transparency to the desktop it kinda cool, but not what I'm trying
to do! Is it possible to make a SurfaceView transparent only through
to its parent?
Thanks,
Blake
--
Dianne Hackborn
Android framework engineer
hack
if
they plan to have a re-usable service), make sure you've got service/
declared in all your client application's manifests.
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All
?
Sorry for the verbosity but I figured more is better than less.
Again, everything works great except this one little part.
:)
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support
)
getting into Android is and include my service work.
Thanks :)
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums
and then use that as a
counter to call getChildAt(int index)?
Thanks
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where
receive the
broadcast if another app is installed after I'm installed, but I don't
get one for my installation.
Is there something I can do to make this work as desired? Or, better
yet, is there a supported way to say run me after installation?
--
Dianne Hackborn
Android framework engineer
) BUT you can't receive callbacks from the service's main
thread, only from its threadpool.
LOL.
Sigh. One unusual thing down, billions to go.
Thanks for the pointers Dianne :).
Hans :)
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send
...
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support. All such questions should be posted on public
forums, where I and others can see and answer them
701 - 800 of 5229 matches
Mail list logo