Monday, October 31, 2016

Android Revolution HD on HTC London Event





On Tuesday, February 19th, 2013 in London there is something big going to happen. Weve all heard some rumors and seen leaked pictures, but there is nothing officially confirmed just yet. Our biggest expectation is to see new high-end HTC device called HTC One (HTC M7) running new user interface - HTC Sense 5.0. Maybe there is something more...

Why am I writing all this? Because I will be there, relating on live this great event. From Feb. 18th Ill be in London with HTC, counting down the last minutes to the show beginning. Follow me on Twitter (@mike1986_), watch my Facebook site (http://www.facebook.com/AndroidRevolutionHD) and check out this blog regularly for hot & fresh news, photos and details about upcoming HTC top products!

You can see my photos from that great journey here - http://android-revolution-hd.blogspot.com/p/trip-to-london-for-htc-event-2013.html



Read More..

Meet the HTC One Max a Supersized HTC One



That big, bold beauty pictured above is the HTC One Max. There have been more than a few leaks about this product. Why? Theres a lot to love - literally and figuratively. Lets start with a quick video introducing the product:



The HTC One Max is everything you love about the HTC One, supersized! Heres the list of the most important device features:
  • A massive 5.9 inch, 1080p display (Super LCD3)
  • A gigantic 3300 mAH internal, non-removable Lithium Polymer battery
  • A convenient rear fingerprint scanner for fast locking and launching of apps
  • A side-mounted power button for fast and easy access
  • 32 GB or 16 GB (varies by region) of internal storage, 2 GB of RAM
  • microSD card support, up to 64 GB in size
  • Android 4.3 with Sense 5.5
  • Qualcomm Snapdragon 600 processor at 1.7 Ghz
  • The same UltraPixel camera from the HTC One (4 MP, f/2.0, 28mm lens)
  • 164.5 x 82.5 x 10.29mm in size, 217 grams in weight
  • Supports Qualcomm QuickCharge 1.0, with an included 1.5A charger in the box

Battery life is the #1 thing consumers want to see improved, so if youre all about the long-lasting battery life, the HTC One Max is absolutely amazing. How amazing? Almost 55 hours of usage between charges. And this isnt putting it in power saving mode, turning things off constantly, etc. This is WiFi on, Bluetooth on, and GPS on during the daylight hours.


Part of what makes the battery life great is us using the Snapdragon 600 processor. The HTC One Max has the same screen resolution as the HTC One, which is a top performer, so the experience is the same on both devices, so while other devices in this category are shipping with the Snapdragon 800, its the day to day experience of using the device that matters more than the specs.
How does it compare, size-wise, to the HTC One and HTC One mini? A picture says it all:


Make no mistake, this is a big phone, but its amazing how quickly you can adapt to the larger size.
Its worth pointing out how great gaming is on a 5.9 inch screen. BoomSound is incredible - the speaker chambers are larger, so its even louder than the HTC One - and the camera experience is amazing with such a large screen. Sharing photos and videos with others on a 5.9 inch screen is a great experience!
Availability on specific carriers, and pricing, will be announced in the coming days/weeks. The best thing you can do is contact your wireless carrier via Twitter and ask them when the HTC One Max is coming - they need to see the enthusiasm consumers have for our phones. Remember the carrier decides whether or not to carry our phones and sell them to you.


Full specification:

SIZE: 164.5 x 82.5 x 10.29mm 
WEIGHT: 217g
DISPLAY: 5.9” Full HD 1080p
CPU: Qualcomm® Snapdragon™ 600, 1.7GHz quad-core CPUs
PLATFORM: Android™ 4.3 with HTC Sense™ 5.5
MEMORY: Total storage:  16GB/32GB | RAM: 2GB | Expansion card slot: Supports microSD™ 
SIM: micro SIM
SENSORS: Gyro sensor | Accelerometer | Proximity sensor | Ambient light sensor | Fingerprint scanner
CONNECTIVITY
?  3.5 mm stereo audio jack
?  NFC
?  Bluetooth® 4.0 with aptX™ enabled 
?  Wi-Fi®: IEEE 802.11 a/ac/b/g/n
?  DLNA® for wirelessly streaming media from the phone to a compatible TV or computer
?  HTC Connect™ 
?  Support consumer infrared remote control
?  micro-USB 2.0 (5-pin) port with mobile high-definition video link (MHL) for USB or HDMI connection
SOUND: HTC BoomSound™ | Dual frontal stereo speakers with built-in amplifiers | Sense Voice
CAMERA:
?  HTC UltraPixel Camera
?  BSI sensor, Pixel size 2.0 µm, Sensor size 1/3
?  Dedicated HTC ImageChip™ 2
?  f/2.0 aperture and 28 mm lens
?  Smart Flash: Five levels of flash automatically set by distance to subject
?  1080p Full HD video recording with HDR video
?  Front Camera: 2.1 MP, 88° wide angle lens with HDR capability
?  Front Camera: 1080p Full HD video recording.  
?  HTC Zoe™ with Sequence Shot, Always Smile and Object Removal
?  Gallery with Video Highlights and HTC Share
?  Continuous shooting and VideoPic
BATTERY: Embedded rechargeable Li-polymer battery | Capacity: 3300 mAh
GPSGPS/AGPS | Digital Compass
AC ADAPTER: Voltage range/frequency: 100 ~ 240 V AC, 50/60 Hz | DC output: 5 V and 1.5 A


Have any questions or comments? Feel free to share! Also, if you like this article, please use media sharing buttons (Twitter, G+, Facebook) below this post!
Read More..

Saturday, October 29, 2016

Mobile Doc Scanner MDScan Apk v3 1 1 Patched

Mobile Doc Scanner (MDScan) v3.1.1 Patched
Extremely useful mobile tool gives users the power to scan any type of document, transform it into PDF format and share it right from your device.
With MDScan users are free to scan any type of document, ranging from receipts to text pages and almost everything in between, on the go anywhere and anytime.
A perfect companion for busy users, MDScan allows anyone to transform everything from invoices to whiteboards and classes notes, magazine articles and more into a PDF format in order to easily export them, share and e-mail it to others, or for any other reason they can come up with. MDScan automatically detects borders, corrects distortion, and equalizes brightness to create clear, legible documents at a very high speed for your convenience.
Going above and beyond other mobile scanning solutions MDScan offers Batch shooting mode for a super fast scanning so users can easily scan within seconds multiple pages and save scanned files for batch processing later.
The app shines in terms of uploading as well as all document conversion is performed locally right on users device. This means that you can upload documents to cloud storage services, including Dropbox, Google Docs, or Box.net, email services, or Facebook and Twitter that is guaranteed to go off quickly, without a hitch, and without risk of any potentially sensitive information becoming compromised.
Simply put theres enough for you to worry about without having to go out of your way to scan and convert files into PDFs should the need arise, and now with MDScan its one worry you wont ever have again.
?????
Main advantages and benefits
========================
? Transform any image into PDF format.
? Automatic, high quality document edge detection and perspective correction.
? Manual free Advanced image processing to enhance poor quality images and documents.
? Quickly scan and manage multi-page documents on the go
? Scan, upload or send any document quickly, including receipts, news and magazine articles, invoices, coupons, posters and much more
? Cloud storage and social network integration for accessibility and sharing
Don’t hesitate to contact us at any time and send your suggestions or questions to our support email. We try to do our best to answer to your comments as soon as possible.
This software is registered by Russian Federal Institute Of Industrial Property # 2013619506

WHATS NEW
Improved Lolipop (new API) Camera
Share multiple PDFs
Share PDF from list of scans by long click
Export scan as separated JPEG files
Minor interface improvments
Minor bugs fixes

This app has no advertisements

Download APK:
click here
Additional Server:
click here
Google Play Store:
click here
Read More..

Friday, October 28, 2016

HTC decides to skip Android 4 4 4 update OTA based on 4 4 3 security fix coming soon


International version of the HTC One M8 is currently running Android 4.4.2 (1.54.401.10) but this will change very soon. According to the confirmed information, the new over-the-air (OTA) update with Android 4.4.3 will start rolling out late next week for the 0P6B10000 variant of the HTC One M8 with the following CID numbers: 

HTC__001, HTC__E11, HTC__102, HTC__203, HTC__405, HTC__Y13, HTC__304, HTC__A07, HTC__002, HTC__016, HTC__032, HTC__J15, HTC__M27, HTC__A48, HTC__K18.

What we know so far is that the update will be tagged as 2.2x.401.x and together with Android 4.4.3 it will bring slightly updated HTC Sense UI (HTC SDK API: 6.25) but the version of the launcher will remain 6.0, at least officially.
  • ro.build.id=KTU84L
  • ro.build.version.release=4.4.3
  • ro.com.google.gmsversion=4.4_r4
  • HTC SDK API: 6.25 (current latest M8 software is based on SDK 6.17) ---> this might indicate improved HTC Sense version
  • kernel version is still 3.4.0
Apart from the OS itself, almost every part of the firmware will be updated too.
  • Hboot: 3.18.0.0000
  • Radio: 1.19.21331147A1.09G
  • OpenDSP: 38.2.2-00542-M8974.0311
Why no Android 4.4.4 yet? Because HTC decided to include the security fixes known from Android 4.4.4 in their 4.4.3 release. For some reason this must be easier for the HTC if such path was chosen.

Also, whats worth to mention is that M8 owners who re-locked their previously unlocked devices using htcdev.com, after the Android 4.4.3 update might need to generate new unlock_code.bin token to unlock the device again. Apparently the identifier token wont be the same after the incoming OTA.

There are also some few more surprises coming from the HTC in the incoming update but we cant reveal it yet! :)

Do you have any questions or comments? Feel free to share! Also, if you like this article, please use media sharing buttons (Twitter, G+, Facebook) below this post!


For latest news follow Android Revolution HD on popular social platforms:

Read More..

Google Vault now covers Hangouts for work chat


As an IT admin you want your organization to be free to focus on getting stuff done. But part of your role is also to make sure you stay on top of legal compliance. Today we’re making it a little bit easier to do both with two new Hangouts features.

Over the next few days, we’ll roll out an admin option that lets you manage Hangouts chat history in your organization, so that you can make certain that it’s either on or off. People in your organization can have the freedom to chat with whomever they want — whether that person is part of your organization or not — and you can be sure that new employee conversations stay personal and private, because they’ll disappear shortly after taking place.
We’re also adding Google Apps Vault support for Hangouts chat. With Vault support for chat, organizations of all sizes can quickly find and preserve chat messages. This is a great way to safeguard business-critical information for continuity, compliance and regulatory purposes.

Find out how to tailor Hangouts to best suit your organizations compliance needs.
Read More..

Thursday, October 27, 2016

HTC ROM Update Utility RUU variants explanation

Owners of HTC devices might be a little confused when it comes to understanding the current method of numbering used by HTC to mark their software updates. Here you can find a short explanation of this matter.

First of all, we all know that HTC sells their devices all over the world. Every carrier and region of the world has some more or less different "local settings". By "local settings" I mean things like: emergency call numbers, languages, time-zone settings, network settings, carriers branding, GPS settings and more. Because of that each software for even the same device must be different.

Secondly, even the same device might use different hardware related to the region of the world. For example, HTC One is available in at least 6 different hardware configurations. One of the main difference is modem version. GSM version of the HTC One uses MDM8215 chip and LTE variant has MDM9215. Verizon (US) is known to have MDM9615. So thats already 3 different versions of the same device.

Every HTC update has the following numbering structure:

a.bb.ccc.d

a - the first number of the software. Normally it doesnt increase very often, but when it does, it usually means newer Android version.
bb - this number is also a software number. Increasing bb number means some more or less major update based on the same Android version, but sometimes it might even bring newer version of the HTC Sense.
ccc (also cc or cccc) - this is the number of the region/carrier. It has nothing to do with the software itself being newer or older. More details below.
d (sometimes dd) - the third part of the software version (the fourth one in the RUU name). Usually indicates some minor update with some hot fixes.


Example: 3.20.401.3

So basically, when you are interested in the software version, you should look at a.bb.d (3.20.ccc.3) because ccc (401) means only the region/carrier variant of the software.

Here is the list I was able to gather of possible RUU variants:

a.bb.61.d - Orange UK (United Kingdom)
a.bb.65.d - Orange CH (Switzerland)
a.bb.69.d - Orange PL (Poland)
a.bb.73.d - Orange FR (France)
a.bb.75.d - Orange ES (Spain)
a.bb.110.d - T-Mobile UK (United Kingdom)
a.bb.111.d - T-Mobile DE (Germany)
a.bb.112.d - T-Mobile AT (Austria)
a.bb.113.d - T-Mobile CZ (Czech Republic)
a.bb.118.d - T-Mobile PL (Poland)
a.bb.161.d - Vodafone UK (United Kingdom)
a.bb.163.d - Vodafone FR (France)
a.bb.165.d - Vodafone IT (Italy)
a.bb.166.d - Vodafone CH-DE (Switzerland - Germany)
a.bb.168.d - Vodafone GR (Greece)
a.bb.169.d - Vodafone AT (Austria)
a.bb.206.d - O2 UK (United Kingdom)
a.bb.207.d - O2 DE (Germany)
a.bb.401.d - World Wide English (WWE)
a.bb.415.d - Arabic (UAE/Middle East)
a.bb.468.d - Turkey
a.bb.497.d - Morocco
a.bb.498.d - WWE Brightpoint US (United States)
a.bb.502.d - Cingular US (United States)
a.bb.531.d - T-Mobile US (United States)
a.bb.631.d - Rogers Canada (WWE)
a.bb.651.d - Sprint US (United States)
a.bb.661.d - Telus WWE (Canada)
a.bb.666.d - Bell Canada
a.bb.707.d - Asia (WWE)
a.bb.708.d - Asia HK (Hong Kong)
a.bb.709.d - Asia TW (Taiwan)
a.bb.720.d - Asia (India)
a.bb.728.d - Virgin AU (Australia)
a.bb.751.d - Chunghwa Telecom (Taiwan)
a.bb.771.d - Hutchison 3G UK (United Kingdom)
a.bb.777.d - ?
a.bb.841.d - Telsra WWE (World Wide English)
a.bb.862.d - Voda-Hutch AU (Australia)
a.bb.901.d - TIM IT (Italy)
a.bb.911.d - SK Telecom (South Korea)
a.bb.980.d - Optus AU (Australia)
a.bb.999.d - HTC Test RUU
a.bb.1400.d - China
a.bb.1401.d - ?
a.bb.1403.d - HTC China CMCC (China Mobile Communications Corporation)
a.bb.1540.d - HTC One U.S. Developer Edition
a.bb.1600.d - ?
a.bb.1700.d - HTC One Google Edition

The list is quite long, and Im sure there are still some some missing. If you know more variants, please let me know in the comments section.

The 401 and the 707 devices are usually the first ones that HTC prepare updates for. Carrier branded software is usually months after the WWE updates.

Finally, keep in mind that each software version is connected with the CID (Carrier ID) and MID (Model ID) of your device. That means you cant use whichever version you want, unless you have S-OFF on your device. Each ROM Update Utility.exe package will check your device details (bootloader version, MID and CID) before starting the update process.

Have any questions or comments? Feel free to share! Also, if you like this article, please use media sharing buttons (Twitter, G+, Facebook) below this post!
Read More..

Promises in the Google APIs JavaScript Client Library

The JavaScript Client Library for Google APIs is now Promises/A+-conformant. Requests made using gapi.client.request, gapi.client.newBatch, and from generated API methods like gapi.client.plus.people.search are also promises. You can pass in response and error handlers through their then methods.

Requests can be made using the then syntax provided by Promises:
gapi.client.load(‘plus’, ‘v1’).then(function () { 
gapi.client.plus.people.search({query: ‘John’}).then(function(res) {
console.log(res.result.items);
}, function(err) {
console.error(err.result);
});
})
All fulfilled responses and rejected application errors passed to the handlers will have these fields:
{
result: *, // JSON-parsed body or boolean false if not JSON-parseable
body: string,
headers: (Object.),
status: (?number),
statusText: (?string)
}
The promises can also be chained, making your code more readable:
gapi.client.youtube.playlistItems.list({
playlistId: PLOU2XLYxmsIIwGK7v7jg3gQvIAWJzdat_,
part: snippet
}).then(function(res) {
return res.result.items.map(function(item) {
return item.snippet.resourceId.videoId;
});
}).then(function(videoIds) {
return gapi.client.youtube.videos.list({
id: videoIds.join(,),
part: snippet,contentDetails
});
}).then(function(res) {
res.result.items.forEach(function(item) {
console.log(item);
});
}, function(err) {
console.error(error.result);
});
Using promises makes it easy to handle results of API requests and offer elegant error propagation.

To learn more about promises in the library and about converting from callbacks to promises, visit Using Promises and check out our latest API reference.

Posted by Jane Park, Software Engineer
Read More..

Tuesday, October 25, 2016

Call Of Duty Strike Team Hack Cheat Tool No Survey No Password for Android iOs Iphone


???????? ?? ??????? call of duty strike team hack
Call Of Duty Strike Team Hack 

Welcome! Get Call Of Duty Strike Team Hack. With this extension you can get unlimited Tokens and unlimited ammo in your game! Download tool right now and enjoy game without any limits! All what you have to do is in the instruction below. Modern design and user friendly interface will help you to use Call of Duty Strike Team cheats very fast and intuitively. Addition has special guard protection script, which protects you all the time. We keep our cheats working for ever with daily updates. Call of Duty Strike Team Cheat works on all iOS and Android devices and root or jailbreak are not required.
With problems please visit our contact section and mail us! We will help you or fix bugs as soon as possible.
Experience an immersive single-player campaign full of epic, cinematic moments in diverse locations around the world or put your skills to the test as you fight off waves of increasingly difficult enemies. Compete against family, friends and the Call of Duty Strike Team community for leaderboard domination.
Let’s get Call Of Duty Strike Team cheat exactly right now! This particular extension generates for you unlimited amount of tokens and gives you unlimited ammo. Don’t worry about limits in Call of Duty Strike Team and play like pro with TopProgramer extensions! Download Call of Duty Strike Team hack now! You find links and details below.
 Download

Call of Duy Strike Team Hack Features

– Unlimited Tokens
– Unlimited ammo
– Security – Guard Protection Script
– Works for all iOS and Android devices
– Root or jailbreak NOT required
– Fast device connection
– User friendly interface and modern design
– Daily updates
– Quick help
Read More..

HTC One variants update

Image taken from smart.com.ph


In my article here I was writing about HTC One GSM/LTE (UL) and GSM (U) versions. The question if ROM based on UL firmware can be flashed on U device is still valid, but now we have some more details about these variants.
It turns out, that UL version of HTC One (having both GSM & LTE radio) will be available mostly in the Europe and North America. Model ID (MID) of this version is PN0710000.

U version (GSM radio only) is going mostly to Asian markets. Model ID (MID) of this version is PN0711000. There is also WL variant, which will be the Sprint version of HTC One. I dont know MID number of this version yet.

In the past we had similar situation with slightly different MIDs numbers of the same device. HTC Sensation had PG5813000 and Sensation XE had PG5813001. Both devices can use the same custom ROMs. HTC Desire HD has PD9810000, while Telus variant had PD9814000 and HTC Inspire 4G (U.S. version of HTC Desire HD) had PD9812000. Again, one custom ROM can be flashed on all 3 devices.
There are also some more details that leads to the conclusion, that most probably users with HTC One variant will be able to use their device with no issues after flashing custom ROM based on UL RUU. This is surely a very good news for both users and custom ROM developers. However, this will probably not enable LTE modem on U devices. So if you want to use LTE and your carrier supports this technology, make sure you will buy HTC One UL.

Have any questions or comments? Feel free to share! Also, if you like this article, please use media sharing buttons (Twitter, G+, Facebook) down this post!



Read More..

Monday, October 24, 2016

Adobe Photoshop CS2 Free Download Full Version

CARA INSTALASI
1. download dan extract Adobe Photoshop 9.0 CS2 part1 dan part 2

2. buka folder, lalu buka file Setup

3. klik next, accept

4. pilih "i have a serial number, install full version" ketikkan pada kolom dibawahnya 1045-1086-6140-3441-3485-1389

5. klik next, next lagi, lalu click install

6. setelah install selesai, sebuah jendela akan muncul. pilih Activation Option, pilih "By Telephone via the automated software activation system"

7. klik next

8. buka Adobe.Photoshop.CS2.Patch.Tryout.to.Full. lalu buka software OS-Adobe_CS2_KeyGen_Tryout_to_Full

9. Pilih activation, pilih yang Photoshop cs2 9.0. anda akan dimintai request code.

10 . kembali buka adobe photoshop activation tadi. masukkan nomor yang tertulis di Activation Number ke OS-Adobe_CS2_KeyGen_Tryout_to_Full request code tadi

11. Kik generate di OS-Adobe_CS2_KeyGen_Tryout_to_Full tadi, akan muncul answer code. masukkan answer code kedalam adobe photoshop activation tadi. lalu klick activate. lalu next.klik finish
selesai

Read More..

Sunday, October 23, 2016

HTC One A9 officially presented

No more leaks and no more speculations. The newest HTC Android device - HTC One A9 was officially presented today, at the HTC #BeBrilliant Launch event. Although its hard to predict the future of the One A9 by looking only at the hardware specification, the device itself is described by many as controversial due to middle-end Snapdragon 617 SoC and iPhonish design. Is it justified? Id say - NO.

First of all Im still using "old" HTC One M8 as my daily device. Ive never had One M9 and being honest I never "really badly wanted" to have one. In my opinion M9 has a great hardware but the design is a step back to the M7 days. With the M8 it was different. I literally felt in love in that piece of metal uni-body art ever since I touched it for the first time. This love continues, even tho my M8 looks like after one year of a high mountains climbing trip. Surprisingly, even the "C" letter detached from the back and lost somewhere. So its just "H" & "T" now. But I still love it.

With the One A9 I feel like I could possibly use it as my next Android device. Even if the hardware may seems worse than One M9 is equipped with, my general opinion in that matter is simple: if you cant see a real performance difference in a real life operations between two devices, go for the one with a better design.
In my opinion Snapdragon 617 SoC is more than enough to satisfy 99% of customers. Its enough to handle newest games and it should generate much less heat than infamous Snapdragon 810. That means it will also throttle less. With AMOLED display it should find new fans among Samsung users too.
"The Qualcomm® Snapdragon™ 617 processor with X8 LTE combines a fast and powerful octa-core CPU with integrated Snapdragon X8 LTE, full 1080p support, and dual-ISPs, designed to deliver the next high-end experiences." - link to Snapdragon 617 specs page.
The overall hardware specification doesnt look bad on the paper and I cant wait to see how One A9 behaves in real.

About the "almost iPhone design" argument - yes, its true that it does look like an iPhone. Yes, its true that HTC was first with such design. The question is - does it really matter? HTC One M9 design was unique and awful (sorry to say that). HTC One A9 design is not as unique, but it just looks good. It doesnt bring any innovation, but Im sure it will find more supporters rather than the M9 design.

Unlike many of my friends Im pleased with what HTC presented today. As a HTC One M8 owner the One A9 sounds like a nice upgrade option to me, the first good looking phone after the One M8.

You can find more details about the HTC One A9 on the official page - HTC One A9.


Do you have any questions or comments? Feel free to share! Also, if you like this article, please use media sharing buttons (Twitter, G+, Facebook) below this post!


For latest news follow Android Revolution HD on popular social platforms:

Read More..

Docker and Containers Coffee With A Googler meets Brian Dorsey

Posted by Laurence Moroney, Developer Advocate

If you’ve worked with Web or cloud tech over the last 18 months, you’ll have heard about Containers and about how they let you spend more time on building software, instead of managing infrastructure. In this episode of Coffee with a Googler, we chat with Brian Dorsey into the benefits of using Containers in Google Cloud Platform for simplifying infrastructure management.

Important discussion topics covered in this episode include:

  • Containers improve the developer experience. Regardless of how large the final deployment is, they are there to make it easier for you to succeed.
  • Kubernetes -- an open source project to allow you to manage containers and fleets of containers.

Brian shares an example from Julia Ferraioli who used Containers (with Docker) to configure a Minecraft server, with many plugins, and Kubernetes to manage it.

You can learn more about Google Cloud platform, including Docker and Kubernetes at the Google Cloud Platform site.

Read More..

Friday, October 21, 2016

Detect touch on GoogleMap onMapClick and onMapLongClick


To detect touch on GoogleMap, modify MapsActivity.java from last example "Google Maps Android API v2 - initialize map in xml".

Edit MapsActivity to implements GoogleMap.OnMapClickListener, GoogleMap.OnMapLongClickListener.

Implement your listeners, onMapClick() and onMapLongClick().

Assign the listeners to your GoogleMap by calling:
mMap.setOnMapClickListener(this);
mMap.setOnMapLongClickListener(this);


package com.blogspot.android_er.androidstudiomapapp;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.InputType;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback,
GoogleMap.OnMapClickListener, GoogleMap.OnMapLongClickListener {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

}

/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setOnMapClickListener(this);
mMap.setOnMapLongClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_addmarkers:
addMarker();
return true;
case R.id.maptypeHYBRID:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
return true;
}
case R.id.maptypeNONE:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
return true;
}
case R.id.maptypeNORMAL:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
return true;
}
case R.id.maptypeSATELLITE:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
return true;
}
case R.id.maptypeTERRAIN:
if(mMap != null){
mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
return true;
}
case R.id.menu_legalnotices:
String LicenseInfo = GoogleApiAvailability
.getInstance()
.getOpenSourceSoftwareLicenseInfo(MapsActivity.this);
AlertDialog.Builder LicenseDialog =
new AlertDialog.Builder(MapsActivity.this);
LicenseDialog.setTitle("Legal Notices");
LicenseDialog.setMessage(LicenseInfo);
LicenseDialog.show();
return true;
case R.id.menu_about:
AlertDialog.Builder aboutDialogBuilder =
new AlertDialog.Builder(MapsActivity.this);
aboutDialogBuilder.setTitle("About Me")
.setMessage("http://android-er.blogspot.com");

aboutDialogBuilder.setPositiveButton("visit",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String url = "http://android-er.blogspot.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});

aboutDialogBuilder.setNegativeButton("Dismiss",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});

AlertDialog aboutDialog = aboutDialogBuilder.create();
aboutDialog.show();

return true;
}
return super.onOptionsItemSelected(item);
}

private void addMarker(){
if(mMap != null){

//create custom LinearLayout programmatically
LinearLayout layout = new LinearLayout(MapsActivity.this);
layout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
layout.setOrientation(LinearLayout.VERTICAL);

final EditText titleField = new EditText(MapsActivity.this);
titleField.setHint("Title");

final EditText latField = new EditText(MapsActivity.this);
latField.setHint("Latitude");
latField.setInputType(InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL
| InputType.TYPE_NUMBER_FLAG_SIGNED);

final EditText lonField = new EditText(MapsActivity.this);
lonField.setHint("Longitude");
lonField.setInputType(InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL
| InputType.TYPE_NUMBER_FLAG_SIGNED);

layout.addView(titleField);
layout.addView(latField);
layout.addView(lonField);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Add Marker");
builder.setView(layout);
AlertDialog alertDialog = builder.create();

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
boolean parsable = true;
Double lat = null, lon = null;

String strLat = latField.getText().toString();
String strLon = lonField.getText().toString();
String strTitle = titleField.getText().toString();

try{
lat = Double.parseDouble(strLat);
}catch (NumberFormatException ex){
parsable = false;
Toast.makeText(MapsActivity.this,
"Latitude does not contain a parsable double",
Toast.LENGTH_LONG).show();
}

try{
lon = Double.parseDouble(strLon);
}catch (NumberFormatException ex){
parsable = false;
Toast.makeText(MapsActivity.this,
"Longitude does not contain a parsable double",
Toast.LENGTH_LONG).show();
}

if(parsable){

LatLng targetLatLng = new LatLng(lat, lon);
MarkerOptions markerOptions =
new MarkerOptions().position(targetLatLng).title(strTitle);

mMap.addMarker(markerOptions);
mMap.moveCamera(CameraUpdateFactory.newLatLng(targetLatLng));

}
}
});
builder.setNegativeButton("Cancel", null);

builder.show();
}else{
Toast.makeText(MapsActivity.this, "Map not ready", Toast.LENGTH_LONG).show();
}
}

@Override
public void onMapClick(LatLng latLng) {
Toast.makeText(MapsActivity.this,
"onMapClick: " + latLng.latitude + " : " + latLng.longitude,
Toast.LENGTH_LONG).show();
}


@Override
public void onMapLongClick(LatLng latLng) {
Toast.makeText(MapsActivity.this,
"onMapLongClick: " + latLng.latitude + " : " + latLng.longitude,
Toast.LENGTH_LONG).show();

//Add marker on LongClick position
MarkerOptions markerOptions =
new MarkerOptions().position(latLng).title(latLng.toString());
mMap.addMarker(markerOptions);
}

}


Next: Make GoogleMaps marker draggabe and detect moving marker

~ Step-by-step of Android Google Maps Activity using Google Maps Android API v2, on Android Studio

Read More..