Step/Debug Android built-in applications - java

I have downloaded the Android source code and can see the java source files for the built-in applications (e.g. com.android.contacts.ContactsListActivity). I am trying to discover how these applications re-use one another via Intents etc. I would also like to see how the UI layouts are assembled for these applications as a design for my own apps.

About using Intents and Intent Filters, if you are less experienced, it will be best for you, if you start learning from a book, then try something in your own application, and only after that dive in the pre-installed apps, IMHO.
You can debug built-in applications, just like any other application, if you have the source. If you want to install other version of a built-in app, you must use the appropriate Intent Filters and change the package name, so that it's different than the original application's.
If you are using the source code, browsing through the internal classes should be helpful, so take a look here.
If you want to examine the UI layout of the built-in apps, the hierarchyviewer in your Android /tools/ folder is your best choice (my second favorite of the bunch, after traceview).
Write back, if something is unclear or doesn't work for you.
Good luck.

Related

Sharing a word in Android

I wanted to know if there is any feature in Android where I could select a word from a third party application and send or share that word to my application. I could store that word in my application for further processing.
Implementing a "share" action is easiest if you are targeting API level 14+ (Android 4.0), as documented here: Adding an Easy Share Action.
If you need to target an earlier API level, the process is a bit more involved, as documented here: Receiving Content from Other Apps.
(Note that while I normally consider link-only answers on Stack Overflow to be a poor choice, the process of implementing "share" actions is somewhat involved and fully documented on the Android developer site. This is a case where simply pointing you at the documentation seems like the most appropriate thing to do.)
Here is Android copy/paste desciption: http://developer.android.com/guide/topics/text/copy-paste.html.
But I don't think there is way to modify 3rd-party app's context menu to add custom option like share, without changing this app's source code or changing Android platform (to add your own sharing mechanism to context menu).

how to (organize) the interaction between the Android UI (HTML, CSS) and native code (Java)?

Good afternoon.
I hasten to add that I am new to developing for Android. I am writing a geolocation service (application).
Standard elements of the user who provides Google does not suit me. In many of the Internet once faced with information which says that you can write a user interface for Android using CSS and html.
After reading a lot of information on this topic, I realized that Most developers tend to use frameworks (PhoneGap. ..). But this approach does not suit me, for two reasons:
javascript - it is used everywhere, and I do not know
This absence of adequate (understandable) documentation or guides for frameworks.
It is for these reasons that I'm wondering whether it is possible to write the user interface using html and CSS, and all the features in Java without using frameworks.
As communication between fallback interface and native code, even with the assistance of javascript, but without the use of frameworks.
P.S. I am not good in English - I hope you have understood the point of my question. I hope for your help.
Normally an Android app defines UI in Android-specific XML and the code is in Java or, if really necessary, C/C++.
Probably you could use a WebView in your Android application which will display an html page from your assets directory.
Such html page can have javascript in it which will invoke some hooks in your code. It's described in the book The Busy Coder's Guide to Advanced Android Development Chapter 1, I believe
yes you can.
your html+css will all be in a webview and there're elements like the webview client that can communicate with what's inside the webview.
But I would like to leave you with a warning:
Every single web based app IS slower and with a poorer interface than proper native apps. Also, without the use of a framework you still will have to know a good portion of the native stuff.

Build Android native library with Adobe Air

I'm currently working on an Android application built with Adobe Air sdk, in AS3. I was wondering if it's possible to compile a kind of UI library that I can import in a Android native application (Java). Basically, I would like to build my UI with Adobe Air, but the main part of my application with Java, the native way.
What I have in mind is to convert the adobe air-generated APK into a Jar file I would import in the native application project, and call some functions that display something on the Screen.
Is it possible? I think it may be possible, because when I don't import Adobe Air SDK in the application, I must install Adobe Air application with the Play Store to make my application working. I don't find lot of things on Google about that :s.
Thank you for your help.
Yes it can be done (in theory), but hold on to your hat, it's a bumpy ride!
I see it is a very old question, with a new bounty (the questioner has not logged on for 3 years!), but here we go...
This method goes to the heart of how android java apps are constructed and run (i.e. DEX, so it will work with adobe-air or ANYTHING, it is fundamental [general method]). (by the way you use the word native in a confusing way, native is commonly understood to mean the JNI (c++) library element of an app).
You say:
"What I have in mind is to convert the adobe air-generated APK into a
Jar file I would import in the native application project, and call
some functions that display something on the Screen."
Android programs are compiled into .dex (Dalvik Executable)[now called ART but binary compatible] files,
which are in turn zipped into a single .apk file on the device (with other things like the manifest and resources). (unzip a .apk and look inside).
A .jar file contains DEX files (zipped). (unzip a compiled .jar and look inside).
I have done some work like this before, here's a link to a tutorial and coding examples [tested by me] (in android studio + gradle) [custom build elements are usually needed (I also give an ant example)].
See my stack-overflow answer Dynamic loading of DEX files
This in theory answers your question, but it's fundamental stuff, complex and has limitations that make it hard to code and maintain (resources are a real pain in the a**e).
Question: This all seems very complicated and hard !
Yes it is ! It is an increadably silly an difficult thing to do! That is why we invented cross platform frameworks, (and for web based code javascript/css/html5...). Failing that PORT the code.
I'm more of a Flash/AS3 coder than Java so can't give you a full answer but...
A better approach might be to just render your SWF-based User Interface itself via Java code (as opposed to compiling SWF into APK format then trying to embed Flash APK inside Android APK).
This way your SWF can also communicate with Java functions (via AS3's external Interface class). Making it easier to trigger Java functions when a button on the SWF U.I is pressed etc..
You just have to find an SWF render library for Java.
Maybe check out SWFTools. Particularly the SWF Class looks promising. I have not tested this library but it might help you.
I am not a Adobe AIR developer at all, however, I have developed a few Android App with both native environment and with some kind of framework (specifically PhoneGap). So, may this can help you.
I don't think that there would be any tool which could directly convert mobile apps build using frameworks like Adobe AIR, PhoneGap or any other HTML5 based framework to a native Android app because technically it is very difficult and unfeasible to do a proper mapping between each and every element of HTML5 (or Flex element in your case) to a corresponding native control or logic. The best you can do is use plugin mechanism provided by your framework to interact with Java and vice-versa and basically that is why the framework is there. For most of HTML5 based frameworks there is a plugin mechanism which allows developer to interact with native functionality (like Background Services, Activity or any other native resource). Even these frameworks are build using the same modular or plugin based approach and there major functionality (accessing Camera, Audio, SD Card etc native resources) works like this. We have to enable that feature before using that in our app.
So, look for plugin type of mechanism in Adobe AIR.
Hope this helps.
Maybe this is a dirty way to help you, but you can :
Install the adobe air program in one computer
Copy the files of the install folder of the adobe air program
Embed all this files in the java application
Install the java application
Save the adobe air files in one folder
Start the adobe air with java (like you will do it with the console, a simple call to YourAirApp.exe)

GWT integration with PhoneGap

Edit - I know there are similar questions to this on SO, but I feel my specific questions are not duplicates at all. If you disagree with me please bring them to my attention before downnvoting or closevoting! If you can prove to me that my question is a true duplicate I will delete this question myself!
My understanding of the GWT is that it provides an SDK and API that allows you to code in Java, and it generates all the client-side HTML, CSS and JavaScript required to run a full-fledged web (or mobile web) app.
My understanding of PhoneGap is that it allows you to code against its JavaScript API and, through configuration, allows you to tell it which native mobile platforms (Android, iOS, Windows Phone, etc.) it should create nativee wrappers for. Hence you "write once, run many" with it, turning your JavaScript code into a native Android app, native iOS app, etc.
If these two assumption are incorrect, please begin by correcting me! And, if there are any caveats to these assumptions, please let me know!
Assuming my understanding on GWT and PhoneGap are more or less correct, I want to try and use them together for an app that would be available as (1) a web app, (2) a mobile web app, (3) an Android app and (4) as an iOS app.
I want to "daisy-chain" these two in my Ant build, whereby my pure Java code is converted (via GWT) into JavaScript (that complies to the PhoneGap API), and then a second build process uses PhoneGap to create and deploy:
A Java WAR (web and mobile web app)
An Android APK
An iOS binary (I believe this is an IPA file, but I may be wrong)
So with those as the "givens", here are my questions:
Is this possible? If not, why? Any way to hack- or juryrig-together a solution that forces this to work?
I've noticed something called gwt-phonegap - will I need this in order for my proposed solution to work, or would this library just be a "nice to have"? Why or why not?
Any other considerations I am not thinking of here? Other libraries or tools that would behoove me?
Note: I have heard (but am not asserting!) that Titanium is superior to PhoneGap. Titanium, however, is not free. And I am quite broke. Thanks in advance for any help here!
There is an open source project out there combining GWT & Phonegap to build mobile apps:
mgwt - http://www.m-gwt.com
There are many people out there using it to build mobile apps and there is quite a lot on documentation including videos there, especially this one:
http://www.youtube.com/watch?v=0V0CdhMFiao&feature=plcp

audio editing web app

I want to develop, as a part of my project, a web application that will enable users to edit, mix and apply effects to audio. I am aware of the J2EE development pattern, but am not sure where to start from. I want Audacity like functionality (actually, sox). Is there any Java API for audio editing/mixing and applying effects? If yes, can one write new effects? This would allow me to dynamically generate effects chains, based on the users' input. I searched the web, but it's all "learn to use audacity..." there. Also, is there any way such effects can be applied in (near) real time?
I found Soundation and Myna to be good apps that already do what I want( though Myna has no real time effects support), but they've both got the same old audio editing UI.
Thanks in advance!
Maybe you can look at this:
"Movie Masher going open source after Adobe supported it thus allowing integration to your site too." Maybe your solution is here : http://www.moviemasher.com/
You should check these options below:
Web Audio API
http://www.w3.org/TR/webaudio/
And also
WebPD:
https://github.com/sebpiq/WebPd

Categories

Resources