anchor.diff:  *  *Effects:* Android devices do no support 3D features as well as PCs – or even not at all. This restriction includes post-processor filters (depth-of-field blur, bloom, light scattering, cartoon, etc), drop shadows, water effects, 3D Audio. Be prepared that these effects will (at best) slow down the application or (in the worst case) not work at all. Provide the option to switch to a low-fi equivalent!
   *  *Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++:* Use different base UI layout XML files for the mobile version of your app to account for a different screen resolution.
   
  -*Best Practice:* Ideally, you write the core application code in a way that it checks for the environment it's being run on, and automatically adapts the device's limitations by switching off effects, changing input mechanisms etc. Learn how to <<jme3/advanced/read_graphic_card_capabilites#,read graphic card capabilites>> here.
  +*Best Practice:* Ideally, you write the core application code in a way that it checks for the environment it's being run on, and automatically adapts the device's limitations by switching off effects, changing input mechanisms etc. Learn how to xref:ROOT:jme3/advanced/read_graphic_card_capabilites.adoc[read graphic card capabilites] here.
   
   
   == Using Android specific functions
   
   As described above, you should always try to design your application as platform independent as possible. If your game becomes a sudden hit on android, why not release it on Facebook as an applet as well? When your application is designed in a platform independent way, you don't have to do much more but check a checkbox to deploy your application as an applet. But what if you want to for example access the camera of an android device? Inevitably you will have to use android specific api to access the camera.
   
  -Since the main project is not configured to access the android api directly, you have to install NBAndroid (see above) to be able to edit the created android project in the SDK. After installing, click the “open project button and navigate to the “mobile folder inside the main project folder (it should show up with an android “a icon) and open it.
  +Since the main project is not configured to access the android api directly, you have to install NBAndroid (see above) to be able to edit the created android project in the SDK. After installing, click the "`open`" project button and navigate to the "`mobile`" folder inside the main project folder (it should show up with an android "`a`" icon) and open it.
   
   [.right]
  -image::jme3/android_access.png[android_access.png,width="",height=""]
  +image::android_access.png[android_access.png,width="",height=""]
   
   Although you will use android specific api, using a camera is not exactly android specific and so you should try to design this part of the application as platform independent as possible as well. As an example, if you want to use the phones camera as an image input stream for a texture, you can create e.g. the AppState that manages the image and makes it available to the application inside the main project (no android code is needed). Then in the android part of the code you make a connection to the camera and update the image in the AppState. This also allows you to easily support cameras on other platforms in the same way or fallback to something else in case the platform doesn't support a camera.
   
  
positive.code: *Building*
  
  Right-click the project node to build your project. +
  An APK file is created in the “dist folder.
  
  *Running*
  
  .  Right-click the project node and choose Set Main Project.
  .  Select the “Android Device build configuration next to the Run toolbar button.
  .  _Make sure “Compile on Save is disabled in your project preferences._
  .  Run the application on a connected phone by right-clicking it and selecting “Run or press the “Play button in the toolbar.
  .  The application will run and output its log to the “Output window of the SDK.
  .  When finished testing, click the “x next to the run status in the lower right to quit the logging output.
  
  The default android run target uses the default device set in the Android configuration utility. If you set that to a phone you can run the application directly on your phone, the emulator does not support OpenGLES 2.0 and cannot run the engine.
  
  
negative.code: 
  === jMonkeyEngine SDK Android Integration
  
  Mobile deployment is a "`one-click`" option next to Desktop/WebStart/Applet deployment in the jMonkeyEngine SDK.
  
  *  Automatic creation of Android harness and settings.
  **  Ant script build target creates APK file.
  