Thursday, May 21, 2009
From Android to AppEngine
So I've finished the first (crude) iteration of my Android app, and am now moving on to creating a web application that will act as middleware.
Why a web app? Well. My Android app basically consists of grabbing the phone's current location, adding a picture and notes if the user so desires, and uploading this data to a web site. (I'm actually thinking of hiving off this basic functionality as a "Scout API" down the line, and releasing the code for future Android novices; I'm guessing that "hey, let's have people register / comment on the locations of $things1 when they come across them!" apps out there.
But a phone has very limited resources, from CPU to storage, and an annoying UI; so rather than make the user do everything on the phone, far better just to grab the on-the-spot data and do whatever further processing is required on a web site far, far away.
So I've started playing with Google AppEngine. Thus far it looks very easy, very powerful, and integrates seamlessly with Google Accounts, so you don't have to roll your own user infrastructure (and so you get locked into theirs....) It's also currently only available in Python, but what the hell, I was getting bored of Java anyway, right? More on AppEngine in the next post.
Other things I learned about Android:
Don't tug on SurfaceView's cape
The camera API is surprisingly simple, and Android comes with a SurfaceView which, among other things, lets you easily display a real-time camera preview (if you subclass it.) My intent was to have the "take picture" and "see preview" user actions be part of the same Activity - ie, when the user selects "take picture", stop showing the preview, and instead draw that snapshot on the SurfaceView.
This did not work well. SurfaceView is a very weird artifact and a difficult one to play with. After about two hours of beating my head against the problem I wisely decided to create a "ShowPicture" Activity with an ImageView, which was much simpler, and worked much better. Moral: don't overload any given Activity. Keep 'em simple, stupid.
Also, because I subclassed SurfaceView into CameraView (as per the Camera example in the API Demos that come with the SDK) I had to have a two-level callback structure: in my Camera Activity, there was a TakePicture button, which called "takePicture()" in my CameraView, which instructed its Camera to snap a shot. Then there were three callbacks in CameraView (one to indicate success, one for the RAW, one for the JPEG) and in turn I had to callback Camera. This works fine, but is a little more convoluted than I'd like.
Be careful about where you are in the stack
Creating a new ShowPicture activity did create a new problem, in that the user navigation might be "edit note -> take picture -> see preview" and might be "edit note -> see existing picture -> take new picture". In the first case, after you take the picture, you want to open a new SeePicture Activity; in the second, you want to return to the existing one. The solution was to pass a flag in the Intent that goes to the Camera activity, indicating whether you're taking a new picture or replacing an existing one.
Always save when leaving a window
In theory, Android could kill your app at any time, to conserve resources. It will probably notify you before it does so (see the Activity Life Cycle.) So it's best to save all user-modified information in "onPause()", just on case. This incentivizes you to keep your database structures very simple.
This does create the cancellation problem as per my last post, but I think that's the lesser of two evils.
GPS is busted in the emulator
The emulator's mock location providers basically don't work. Fortunately, this basically doesn't matter, as you can roll your own if you really care.
1For the record, I hate Perl with an abiding passion, but the $ prefix remains the best way to signify "this is a variable" in prose.
Why a web app? Well. My Android app basically consists of grabbing the phone's current location, adding a picture and notes if the user so desires, and uploading this data to a web site. (I'm actually thinking of hiving off this basic functionality as a "Scout API" down the line, and releasing the code for future Android novices; I'm guessing that "hey, let's have people register / comment on the locations of $things1 when they come across them!" apps out there.
But a phone has very limited resources, from CPU to storage, and an annoying UI; so rather than make the user do everything on the phone, far better just to grab the on-the-spot data and do whatever further processing is required on a web site far, far away.
So I've started playing with Google AppEngine. Thus far it looks very easy, very powerful, and integrates seamlessly with Google Accounts, so you don't have to roll your own user infrastructure (and so you get locked into theirs....) It's also currently only available in Python, but what the hell, I was getting bored of Java anyway, right? More on AppEngine in the next post.
Other things I learned about Android:
Don't tug on SurfaceView's cape
The camera API is surprisingly simple, and Android comes with a SurfaceView which, among other things, lets you easily display a real-time camera preview (if you subclass it.) My intent was to have the "take picture" and "see preview" user actions be part of the same Activity - ie, when the user selects "take picture", stop showing the preview, and instead draw that snapshot on the SurfaceView.
This did not work well. SurfaceView is a very weird artifact and a difficult one to play with. After about two hours of beating my head against the problem I wisely decided to create a "ShowPicture" Activity with an ImageView, which was much simpler, and worked much better. Moral: don't overload any given Activity. Keep 'em simple, stupid.
Also, because I subclassed SurfaceView into CameraView (as per the Camera example in the API Demos that come with the SDK) I had to have a two-level callback structure: in my Camera Activity, there was a TakePicture button, which called "takePicture()" in my CameraView, which instructed its Camera to snap a shot. Then there were three callbacks in CameraView (one to indicate success, one for the RAW, one for the JPEG) and in turn I had to callback Camera. This works fine, but is a little more convoluted than I'd like.
Be careful about where you are in the stack
Creating a new ShowPicture activity did create a new problem, in that the user navigation might be "edit note -> take picture -> see preview" and might be "edit note -> see existing picture -> take new picture". In the first case, after you take the picture, you want to open a new SeePicture Activity; in the second, you want to return to the existing one. The solution was to pass a flag in the Intent that goes to the Camera activity, indicating whether you're taking a new picture or replacing an existing one.
Always save when leaving a window
In theory, Android could kill your app at any time, to conserve resources. It will probably notify you before it does so (see the Activity Life Cycle.) So it's best to save all user-modified information in "onPause()", just on case. This incentivizes you to keep your database structures very simple.
This does create the cancellation problem as per my last post, but I think that's the lesser of two evils.
GPS is busted in the emulator
The emulator's mock location providers basically don't work. Fortunately, this basically doesn't matter, as you can roll your own if you really care.
1For the record, I hate Perl with an abiding passion, but the $ prefix remains the best way to signify "this is a variable" in prose.
Labels: Android, AppEngine, CanvasView, Java, SurfaceView
Comments:
Cyber Security Solutions India: Your Gateway to Becoming an Elite Ethical Hacker: Are you ready to be part of the Cyber Security Elite? Indian Cyber Security Solutions is your ultimate destination. Our comprehensive ethical hacking training program will provide you with advanced techniques and tools to protect organizations from cyber threats. Master the art of ethical hacking and unleash your potential with us.
<< Home
google app engine now supports java, and therefore (more excitingly) a range of jvm languages. looking forward to playing with it myself, if i ever stop spending 15 hours a day in the offce
Great Article! Keep on sharing the update with us.
Carpet Cleaning Brisbane | Carpet Cleaners Brisbane
Carpet Cleaning Brisbane | Carpet Cleaners Brisbane
Superb ! Your blog is incredible. I am delighted with it. Thanks for sharing with me more information.
Android training in anna nagar
Android Training in Chennai
Android Training in OMR
Python Training in anna nagar
Software testing training in T Nagar
Android Training in T Nagar
Digital Marketing Course in anna nagar
Spoken English Classes in Tnagar
Android training in anna nagar
Android Training in Chennai
Android Training in OMR
Python Training in anna nagar
Software testing training in T Nagar
Android Training in T Nagar
Digital Marketing Course in anna nagar
Spoken English Classes in Tnagar
Thanks for posting this.I got valuable information from your blog.
Carpet Cleaning Adelaide | Carpet Cleaners Adelaide
Carpet Cleaning Adelaide | Carpet Cleaners Adelaide
Nice blog! Thanks for sharing this valuable information
best selenium training in chennai
Selenium Training in Bangalore
Selenium Training in Coimbatore
Selenium course in Chennai
Software Testing Course in Chennai
Hacking Course in Bangalore
Best selenium Training Institute in Bangalore
best selenium training in chennai
Selenium Training in Bangalore
Selenium Training in Coimbatore
Selenium course in Chennai
Software Testing Course in Chennai
Hacking Course in Bangalore
Best selenium Training Institute in Bangalore
Get inspired by your blog. Keep doing like this....
Tally Course in Chennai
Tally Training in Chennai
Tally training in coimbatore
Tally course in madurai
Tally Classes in Chennai
Tally classes in coimbatore
Tally coaching centre in coimbatore
Tally training institute in coimbatore
Software Testing Training in Chennai
German Classes in Bangalore
Tally Course in Chennai
Tally Training in Chennai
Tally training in coimbatore
Tally course in madurai
Tally Classes in Chennai
Tally classes in coimbatore
Tally coaching centre in coimbatore
Tally training institute in coimbatore
Software Testing Training in Chennai
German Classes in Bangalore
Do you require complete packing and furniture removal services from the specialist Removalists Melbourne? Then you should contact Quick Pick Movers Company and get our reliable and punctual home removal services. We have professional and well-trained Home Removalists Melbourne who have expertise in furniture removal services as they have wide experience in this field. Our aim is to provide stress-free and hassle-free home removal services at an affordable price rate. We handle every task from packing to unpacking so that you can be relaxed as well as tension-free in removal services.
Removalists Melbourne
Removalists Melbourne eastern suburbs
Removalists Melbourne south eastern suburbs
Piano removals Melbourne
Pool table removals Melbourne
Facebook
Twitter
Instagram
Removalists Melbourne
Removalists Melbourne eastern suburbs
Removalists Melbourne south eastern suburbs
Piano removals Melbourne
Pool table removals Melbourne
Highlight your business brand on a very vast platform like Google with the help of honest and professional Advertising Agency Melbourne like Leap Agency. We can be your success-booster in the digital world with our experience and knowledge. Our Marketing Agency Melbourne adopts result-focused approach so that customer gets great success in their business via the digital world. Our team has creative ideas and the latest technology, so after combining them, they provide you with the best possible outcome in our services.
If you are searching for Tattoo Artist Melbourne who has deep knowledge as well as aware of the latest trend then you should approach us at City Of Ink and meet our artist team. In our shop, you can find all trendy and sophisticated designs which have style and attraction. Our entire design collection is created by our Tattooist Melbourne so come to our shop ad get a different look with a fashionable tattoo. From our tattooist, you get a fresh approach to tattoo creation.
Google App Engine backend module templates
Google App Engine enables you to run your backend applications on Google's infrastructure, without ever requiring you to maintain any servers.
To simplify the process of adding an App Engine backend to your app, Android Studio now provides three App Engine backend module templates which you can add to your app. You can find them under "New → Module" menu:
App Engine Java Servlet Module provides a simple App Engine Java backend servlet with minimal boilerplate code,
App Engine Java Endpoints Module template leverages Google Cloud Endpoints for your backend, and includes automated object marshalling/unmarshalling, generation of strongly-typed Java client libraries and so on,
App Engine Backend with Google Cloud Messaging includes both Google Cloud Endpoints and Google Cloud Messaging integration, which enables additional features like push notifications.
Looking for Plus Size Dresses which not only have trendy style but also well in the material? Then you should visit My Size online store where you can find your need dresses with an attractive discount. Whether you need Plus size Dresses for Women or plus size clothing your entire searching will end in our store. We have a vast collection of Plus Size Dresses Online service which is appropriate for every function as well as traveling.
Google App Engine enables you to run your backend applications on Google's infrastructure, without ever requiring you to maintain any servers.
To simplify the process of adding an App Engine backend to your app, Android Studio now provides three App Engine backend module templates which you can add to your app. You can find them under "New → Module" menu:
App Engine Java Servlet Module provides a simple App Engine Java backend servlet with minimal boilerplate code,
App Engine Java Endpoints Module template leverages Google Cloud Endpoints for your backend, and includes automated object marshalling/unmarshalling, generation of strongly-typed Java client libraries and so on,
App Engine Backend with Google Cloud Messaging includes both Google Cloud Endpoints and Google Cloud Messaging integration, which enables additional features like push notifications.
Looking for Plus Size Dresses which not only have trendy style but also well in the material? Then you should visit My Size online store where you can find your need dresses with an attractive discount. Whether you need Plus size Dresses for Women or plus size clothing your entire searching will end in our store. We have a vast collection of Plus Size Dresses Online service which is appropriate for every function as well as traveling.
Gone are the days when you had to visit all the nearby plumbing agencies to choose one of the best plumbers in the town. NLK Plumbing offers you to get the best Plumber South Yarra at your doorstep in one phone call. We have an expert team that will handle your plumbing issues such as Plumber Sunshine in such a way like they were never there.
Thanks for sharing the updated news android to app engine!I like to recommend website development company in chennai | seo company in Chennai
https://maps.google.com/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://maps.google.de/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://images.google.de/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://www.google.co.uk/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://maps.google.co.uk/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://images.google.co.uk/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://cse.google.co.uk/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://maps.google.co.jp/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://cse.google.co.jp/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://maps.google.de/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://images.google.de/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://www.google.co.uk/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://maps.google.co.uk/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://images.google.co.uk/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://cse.google.co.uk/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://maps.google.co.jp/url?q=https%3A%2F%2Forangeblog.com.au%2F
https://cse.google.co.jp/url?q=https%3A%2F%2Forangeblog.com.au%2F
Mua vé máy bay tại Aivivu, tham khảo
gia ve may bay di my
có chuyến bay từ mỹ về việt nam chưa
có vé máy bay từ nhật về việt nam không
khi nào có chuyến bay từ đức về việt nam
mở lại đường bay việt nam - hàn quốc
gia ve may bay di my
có chuyến bay từ mỹ về việt nam chưa
có vé máy bay từ nhật về việt nam không
khi nào có chuyến bay từ đức về việt nam
mở lại đường bay việt nam - hàn quốc
Mua vé tại đại lý vé máy bay Aivivu, tham khảo
vé máy bay đi Mỹ giá bao nhiêu
lịch bay mỹ về việt nam
Vé máy bay giá rẻ hà Nội đi Sài Gòn
giá vé máy bay bamboo đi hà nội
vé máy bay đi nha trang
vé máy bay đi Mỹ giá bao nhiêu
lịch bay mỹ về việt nam
Vé máy bay giá rẻ hà Nội đi Sài Gòn
giá vé máy bay bamboo đi hà nội
vé máy bay đi nha trang
I am more curious to take an interest in some of them. I hope you will provide more information on these topics in your next articles.
Data Science Course in Pune
Data Science Course in Pune
It is really a great work and the way in which u r sharing the knowledge is excellent
Tally Course in Tambaram
Tally Course in Anna Nagar
Tally Course in Velachery
Tally Course in T Nagar
Tally Course in Porur
Tally Course in OMR
Tally course in Chennai
Tally Course in Tambaram
Tally Course in Anna Nagar
Tally Course in Velachery
Tally Course in T Nagar
Tally Course in Porur
Tally Course in OMR
Tally course in Chennai
Wonderful Blog.... Thanks for sharing with us...
SQL Training in Velachery
Software Testing Training in Velachery
German Training Institute
Python Training Institute
SQL Training in Velachery
Software Testing Training in Velachery
German Training Institute
Python Training Institute
Aha, it's a good discussion about this paragraph at this place on this website, I read all of that, so now I'm commenting here too...Eligible travelers can obtain a Tourist visa to Turkey and pay the e Visa Turkey cost online by filling an online form with their personal details and passport information.
Its like you learn my mind! You appear to grasp a lot approximately this,
such as you wrote the e book in it or something. I believe that you just could do with
some % to drive the message house a bit, but instead of that, that is great blog.
A fantastic read. I will certainly be back.
my website; 카지노
(mm)
such as you wrote the e book in it or something. I believe that you just could do with
some % to drive the message house a bit, but instead of that, that is great blog.
A fantastic read. I will certainly be back.
my website; 카지노
(mm)
Excellent Blog to read. You have shared useful information. Thank you.
.Net Training in Chennai
DOT NET Course in Chennai
.Net Training in Chennai
DOT NET Course in Chennai
Hello, I'm happy to see some great articles on your site. Would you like to come to my site later? My site also has posts, comments and communities similar to yours. Please visit and take a look keonhacai
Hey! This post could not be written any better! Reading this post reminds me of my previous room mate! He always kept talking about this. I will forward this article to him. Fairly certain he will have a good read. Thank you for sharing! Feel free to visit my website; 먹튀검증가이드
Tül Perde Modelleri
Mobil Onay
mobil ödeme bozdurma
nft nasıl alınır
Ankara evden eve nakliyat
Trafik Sigortasi
dedektör
SİTE KURMAK
aşk kitapları
Mobil Onay
mobil ödeme bozdurma
nft nasıl alınır
Ankara evden eve nakliyat
Trafik Sigortasi
dedektör
SİTE KURMAK
aşk kitapları
Thanks a lot for this informative blog. Kenyan visa for US citizens is a necessary travel document for US citizens. They can get their Kenya visa in 3 to 4 working days.
kartal vestel klima servisi
ataşehir bosch klima servisi
çekmeköy beko klima servisi
kadıköy daikin klima servisi
beykoz alarko carrier klima servisi
üsküdar alarko carrier klima servisi
beykoz daikin klima servisi
üsküdar daikin klima servisi
pendik toshiba klima servisi
ataşehir bosch klima servisi
çekmeköy beko klima servisi
kadıköy daikin klima servisi
beykoz alarko carrier klima servisi
üsküdar alarko carrier klima servisi
beykoz daikin klima servisi
üsküdar daikin klima servisi
pendik toshiba klima servisi
Good content. You write beautiful things.
hacklink
vbet
mrbahis
taksi
mrbahis
hacklink
sportsbet
sportsbet
vbet
hacklink
vbet
mrbahis
taksi
mrbahis
hacklink
sportsbet
sportsbet
vbet
ibomma movie download
skymoviezhd
kayoanime
sdmoviespoint
moviezflix
netnaija
ytcutter
watchcartoononline
ibomma movies telugu
skymoviezhd
kayoanime
sdmoviespoint
moviezflix
netnaija
ytcutter
watchcartoononline
ibomma movies telugu
Lohri SMS
Love Shayari
Bewafa Shayari
Heart Touching
School Life SMS
judaai Shayari
Ghazal Shayari
Independence SMS
https://shayari.cc
Love Shayari
Bewafa Shayari
Heart Touching
School Life SMS
judaai Shayari
Ghazal Shayari
Independence SMS
https://shayari.cc
fl youtube to mp3
online download youtube video convert to mp3
youtube to mp3 downloader virus free
how to download a youtube video mac to mp3
free online youtube converter to mp3 for windows 10
https://yttomp3.pro/
how to copy youtube mp3 with vlc
safe youtube mp3 to mps converter
best youtube to mp3 song converter
4k youtube to mp3 key generator
online download youtube video convert to mp3
youtube to mp3 downloader virus free
how to download a youtube video mac to mp3
free online youtube converter to mp3 for windows 10
https://yttomp3.pro/
how to copy youtube mp3 with vlc
safe youtube mp3 to mps converter
best youtube to mp3 song converter
4k youtube to mp3 key generator
"Unlock the world of ethical hacking with Indian Cyber Security Solutions. Gain the skills to protect against cyber threats and safeguard the digital landscape. Enroll now and become a cybersecurity expert!"
Cyber Security Solutions India: Your Gateway to Becoming an Elite Ethical Hacker: Are you ready to be part of the Cyber Security Elite? Indian Cyber Security Solutions is your ultimate destination. Our comprehensive ethical hacking training program will provide you with advanced techniques and tools to protect organizations from cyber threats. Master the art of ethical hacking and unleash your potential with us.
IObit Driver Booster Crack
Wondershare Filmora Crack
IObit Uninstaller Pro Crack
GlassWire Crack
Adobe Illustrator Crack
Wondershare Recoverit Crack
Adobe Acrobat Pro Crack
4K Video Downloader Crack
Revo Uninstaller Pro Crack
Wondershare Filmora Crack
IObit Uninstaller Pro Crack
GlassWire Crack
Adobe Illustrator Crack
Wondershare Recoverit Crack
Adobe Acrobat Pro Crack
4K Video Downloader Crack
Revo Uninstaller Pro Crack
Indian Cyber Security Solutions Institute offers an advanced Ethical Hacking
training course in Bangalore. Master the techniques of ethical hacking and contribute to strengthening cybersecurity worldwide.
training course in Bangalore. Master the techniques of ethical hacking and contribute to strengthening cybersecurity worldwide.
dijital kartvizit
referans kimliği nedir
binance referans kodu
referans kimliği nedir
bitcoin nasıl alınır
resimli magnet
BTW3L0
referans kimliği nedir
binance referans kodu
referans kimliği nedir
bitcoin nasıl alınır
resimli magnet
BTW3L0
Your profile picture can say a lot about you. Choose from http://imageshack.com/user/dpwalay to say it right!
Hey, thanks for sharing. I also have some information to share, which will be definitely helpful for you. Best Online Platform for Web Development in India
Such an amazing post! Your writing style is incredibly captivating. I was completely drawn in by your words. Your ability to convey ideas is exceptional. Looking forward to reading more from you. Keep up the fantastic work.
Advance your career with ICSS’s Diploma in Cyber Security Training. Master key skills like ethical hacking, digital forensics, and risk management, preparing you for high-demand cybersecurity roles. Get started today: Diploma in Cyber Security Training in India | ICSS.
Step into cybersecurity with ICSS’s Diploma in Cyber Security Training. Gain hands-on experience in identifying and mitigating cyber threats, making you industry-ready. Learn more here: Diploma in Cyber Security Training in India | ICSS.
Elevate your skills in cyber defense with ICSS’s Diploma in Cyber Security. This program covers ethical hacking, digital forensics, and risk management to help you secure top roles. Details here: Diploma in Cyber Security Training in India | ICSS.
Prepare for a bright future with ICSS’s Cyber Security Training. Learn ethical hacking, digital forensics, and more to tackle modern cyber challenges. Discover the program here: Diploma in Cyber Security Training in India | ICSS.
Join the fight against cybercrime with ICSS’s Diploma in Cyber Security Training. Build expertise in ethical hacking, risk management, and incident response. Learn more: Diploma in Cyber Security Training in India | ICSS.
Kickstart your cybersecurity career with ICSS’s Diploma in Cyber Security. Gain practical skills in ethical hacking and risk management to protect digital assets. Explore the course here: Diploma in Cyber Security Training in India | ICSS.
Become a cybersecurity professional with ICSS’s Diploma in Cyber Security. Learn essential skills in digital forensics and risk management to excel in the field. Start now: Diploma in Cyber Security Training in India | ICSS.
Your app development progress is impressive, with a switch from Android to a web app via Google AppEngine. Python offers more flexibility for backend development. Keep things simple and understand Android's APIs, and consider scalability in your backend. Design a RESTful API for data submission and retrieval, use Cloud Storage for media storage, and refine the user experience for uploading media. Keep documentation clear and up-to-date for easy contributions. houston immigration lawyer lawyers may represent individuals, companies, or institutions in disputes over issues like contracts, property, or family matters.
Subscribe to Post Comments [Atom]
<< Home
Subscribe to Posts [Atom]
Post a Comment