Mobile Development Courses Online

Instructor-led live Mobile Development training courses demonstrate through interactive hands-on practice how to develop mobile applications. Experience the remote live training by way of interactive and remote desktop led by a human being!

Live Instructor Led Online Training Mobile Development courses is delivered using an interactive remote desktop! .

During the course each participant will be able to perform Mobile Development exercises on their remote desktop provided by Qwikcourse.


How do I start learning Mobile Development?


Select among the courses listed in the category that really interests you.

If you are interested in learning the course under this category, click the "Book" button and purchase the course. Select your preferred schedule at least 5 days ahead. You will receive an email confirmation and we will communicate with trainer of your selected course.

Mobile Development Training


iOS Security

About

iOS is a mobile operating system distributed exclusively for Apple hardware and designed with security at its core; key security features including sandboxing, native language exploit mitigations or hardware supported encryption all offer a very effective environment for secure software development. The devil is however in the details – a programmer can still commit plenty of mistakes to make the resulting apps vulnerable. This course introduces the iOS security model and the usage of various components, but also deals with relevant vulnerabilities and attacks, focusing on the mitigation techniques and best practices for avoiding them.

Recommended for programmers developing apps who want to understand the security features of iOS as well as the typical mistakes one can commit on this platform.

Participants attending this course will 

  • Understand basic concepts of security, IT security and secure coding
  • Learn the security solutions on iPhone
  • Learn to use various security features of iOS
  • Get information about some recent vulnerabilities of iOS
  • Learn about typical coding mistakes and how to avoid them
  • Get practical knowledge in using security testing tools for iOS
  • Get sources and further readings on secure coding practices

14 hours

3,312 €

Explore Android SDK

About

The Android Software Developer Kit is what you used to develop Android applications. The SDK includes a plugin for use with the Eclipse IDE, as well as command-line tools that can be invoked via an Ant build script. Most developers seem to prefer GUI tools. However, this makes it difficult to choose a different IDE or text editor. Also, complex builds require the execution of custom scripts at build time, and only the command line offers the flexibility to cope with this.

Android apps do not have to be written entirely in Java. It is possible to include C/C++ code and compile it with the Native Development Kit (NDK). This code then interfaces with the Java code through the Java Native Interface (JNI), of which the Dalvik virtual machine includes a (mostly) complete implementation.

Content

  • The difference between a GUI and a command line
  • Native Code
    • Better JNI glue
  • Logging
  • GCC Extensions
  • Setting up Android development in Ubuntu
  • Setting up Android development

7 hours

1,656 €

Learn PhoneGap for Mobile Devices

About

PhoneGap allows programmers to build applications for Android and other mobile devices in JavaScript, HTML5, and CSS3. PhoneGap (also called Apache Cordova) is open source software.

Content

  • What is PhoneGap?
  • Getting started with PhoneGap for Android on MacOSX
  • Getting started with PhoneGap for Android on Windows
  • Plugins
    • Barcode plugin
  • Updating old PhoneGap code

7 hours

1,656 €

Introduction to Android

About

Android's market penetration has extended through Android handset and tablet makers, some do also manufacture other consumer goods.

The most widespread flavors of Android are distributed in binary form in numerous smart-phones and tablet computers of companies that are members of the Open Handset Alliance (OHA), founded by Google, and which keeps tight control over 'first-launch' presentation of the operating system and additional software that is required for inclusion.

Because of Google's widespread services ecosystem that includes Google Drive, Google Maps, YouTube, and other Google properties, a hardware manufacturer intending to ship its devices with the Android operating system usually cannot avoid the inclusion of built-in Google apps (part of Google Mobile Services) in order to successfully entice prospective buyers to purchase the device. Although Google apps can be separately installed by the user, it may be challenging to the average consumer (most people), who might then seek a competing device that does have the Google apps already installed.

Android trademarks and Google Mobile Services software can only be licensed by hardware manufacturers (OEMs) for devices that meet Google's compatibility standards contained within the Android Compatibility Definition Document. Following that path may also require that the manufacturer be a member of the OHA. Per OHA's rules, the inclusion of Google Mobile Services is then mandatory, and the software bundle must be licensed from Google.

Content

  • Android speculations
  • Android varieties
    • Stock Android
    • Forks based on AOSP
    • Community forks

7 hours

1,656 €

Discover Kivy Open-Source Library

About

Kivy is an open-source library that people can use for rapid development of multi-touch GUI programs for Android and other platforms in Python. The "Python for Android" project, by default, uses Kivy for its user interface.

Content

  • Getting Started
    • Introduction
    • Installing Kivy
    • A first App
    • Properties
    • Kv Design Language
    • Events
    • Non-widget stuff
    • Layouts
    • Drawing
    • Packaging
    • Examples
    • Diving in
  • Kivy Project
    • Philosophy
    • Contributing
    • FAQ
    • Contact Us
  • Programming Guide
    • Kivy Basics
    • Controlling the environment
    • Configure Kivy
    • Architectural Overview
    • Events and Properties
    • Input management
    • Widgets
    • Graphics
    • Kv language
    • Integrating with other Frameworks
    • Packaging your application
    • Package licensing

 


7 hours

1,656 €

Work and Life in the Mobile Society in Cloud Computing

About

Imagine not having to mow the lawn, take the garbage out or do the dishes, being able to spend more time doing what we’re really interested in. That’s one man's dream. Add to this not having to own a lawnmower or dishwasher and it gets even better. Now transpose this to a business context and you get a fair idea of what cloud computing is.

Cloud computing is less about what than how we’re doing things. In fact, its intention is to allow users to do exactly what they’ve always been doing but in a greener, more effective, less costly, easily scalable and self-healing way. The picture looks perfect. But is it, really? Leaving all the rasping chores and responsibilities in one another’s hands and focussing on more critical tasks seems to be. In short, all this implies that those secondary services you need will be executed somewhere, any time you want, on another’s physical infrastructure (about which you don’t have to care) and in some unknown way, provided the result will be the same. That’s great indeed and those are assumed strengths of cloud computing but they might easily turn into concerns as well and fast.

Content

  • Issues
    • Loss of Control
    • Reliability
  • Future
  • Conclusion

7 hours

1,656 €

Discover WifiLapper

About

WifiLapper is a free and Open Source Android Application that transforms your phone into a full featured Racing Data Acquisition system. WifLapper can transmit your lap times and sensor data from your car to a laptop running Pitside using Wifi or Cellular Data Network while the car is still racing. Sensors data can come from either your car's built-in OBDII interface using a simple Bluetooth adapter, or through an external IOIO interface. Up to 16 Analog inputs and multiple digital inputs are supported by IOIO, allowing WifiLapper to record any sensor that outputs a voltage.

Content

  • Introduction
  • Adding Content To This Wikibook
  • Google Play Store
  • Open Source
  • Router Repeater Setup using WDS on Tomato/DD-WRT
  • Help with Wifilapper App Issues
  • Help with Wifi Connection Issues
  • Help with the Pitside Console program

7 hours

1,656 €

Discover Android PhotoFilters SDK

About

PhotoFiltersSDK aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media. Library supports OS on API 15 and above.

Features

PhotoFiltersSDK processes filter on any Image within fraction of second since processing logic is in NDK. At present following image filters are included:

  • ToneCurveSubfilter : With this powerful filter you can change RGB channels of any image to create great results.
  • SaturationSubfitler : Used for changing color saturation of an image.
  • ColorOverlaySubfilter : As name suggests you can overlay any image with color of your choice.
  • ContrastSubfilter : Used for changing contrast value of image.
  • BrightnessSubfilter : To change brightness levels.
  • VignetteSubfilter : To apply vignette effect on image. Library also comes with inbuilt Sample Filters (Refer SampleFitlers.java). Implementation is straightforward: Filter fooFilter = SampleFilters.getBlueMessFilter(); Bitmap outputImage = fooFilter.processFilter(inputImage);

7 hours

1,656 €

Discover PermissionX

About

PermissionX is an extension Android library that makes Android runtime permission request extremely easy. You can use it for basic permission request occasions or handle more complex conditions, like showing rationale dialog or go to app settings for allowance manually.

Content

  • Quick Setup
  • Basic usage
  • More Usage
  • Permission-support

7 hours

1,656 €

Flutter For Beginners

About

Flutter is an open-source UI software development kit created by Google. It is used to develop applications for Android, iOS, Linux, Mac, Windows, Google Fuchsia, and the web from a single codebase.

The first version of Flutter was known as the codename "Sky" and ran on the Android operating system. It was unveiled at the 2015 Dart developer summit, with the stated intention of being able to render consistently at 120 frames per second. During the keynote of Google Developer Days in Shanghai, Google announced Flutter Release Preview 2, which is the last big release before Flutter 1.0. On December 4, 2018, Flutter 1.0 was released at the Flutter Live event, denoting the first "stable" version of the Framework. On December 11, 2019, Flutter 1.12 was released at the Flutter Interactive event.

Content

  • Framework architecture
    • Dart platform
    • Flutter engine
    • Foundation library
    • Design-specific widgets
  • Widgets
  • Hello World example

7 hours

1,656 €

Beginner's Android Programming With Kotlin

About

Kotlin is a cross-platform, statically typed, general-purpose programming language with type inference. Kotlin is designed to interoperate fully with Java, and the JVM version of Kotlin's standard library depends on the Java Class Library, but type inference allows its syntax to be more concise. Kotlin mainly targets the JVM, but also compiles to JavaScript (e.g., for frontend web applications using React) or native code (via LLVM); e.g., for native iOS apps sharing business logic with Android apps. Language development costs are borne by JetBrains, while the Kotlin Foundation protects the Kotlin trademark.

Content

  • History
  • Design
  • Syntax
    • Procedural programming style
    • Main entry point
    • Extension functions
    • Unpack arguments with spread operator
    • Destructuring declarations
    • Nested functions
    • Classes are final by default
    • Abstract classes are open by default
    • Classes are public by default
    • Primary constructor vs. secondary constructors
    • Data Class
    • Kotlin interactive shell
    • Kotlin as a scripting language
    • Null Safety
    • Lambdas
    • Complex "hello world" example
  • Tools
  • Applications
  • Adoption

21 hours

4,968 €

Discover Mobile Forensics

About

Mobile device forensics is a branch of digital forensics relating to the recovery of digital evidence or data from a mobile device under forensically sound conditions. The phrase mobile device usually refers to mobile phones; however, it can also relate to any digital device that has both internal memory and communication ability, including PDA devices, GPS devices, and tablet computers.

The use of mobile phones/devices in crime was widely recognized for some years, but the forensic study of mobile devices is a relatively new field, dating from the late 1990s and early 2000s. A proliferation of phones (particularly smartphones) and other digital devices on the consumer market caused a demand for forensic examination of the devices, which could not be met by existing computer forensics techniques.

Mobile devices can be used to save several types of personal information such as contacts, photos, calendars and notes, SMS and MMS messages. Smartphones may additionally contain video, email, web browsing information, location information, and social networking messages and contacts.

Content

  • History
  • Professional applications
  • Types of evidence
    • Internal memory
    • External memory
    • Service provider logs
  • Forensic process
    • Seizure
    • Acquisition
    • Examination and analysis
  • Data acquisition types
    • Manual acquisition
    • Logical acquisition
      • File system acquisition
    • Physical acquisition
    • Brute force acquisition
  • Tools
    • Commercial forensic tools
    • Open-source
    • Physical tools
      • Forensic desoldering
        • Chip re-balling
      • JTAG
    • Command-line tools
      • System commands
      • AT commands
    • Non-forensic commercial tools
      • Flasher tools
  • Controversies
  • Anti-forensics

14 hours

3,312 €

Selenium Fundamentals

About

Selenium is testing framework for web applications It is a test environment. It is also a part of Software Freedom Conservancy, Supported by Microsoft Windows Operating Systems. Selenium provides a playback tool for authoring functional tests without the need to learn a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including C#, Groovy, Java, Perl, PHP, Python, Ruby and Scala. The tests can then run against most modern web browsers. Selenium runs on Windows, Linux, and macOS. It is open-source software released under the Apache License 2.0.

Content

  • Introduction to Selenium 3
  • Use the Actions API
  • The selenium driver class
  • Selenium page object model
  • Learn TestNG framework
  • The JSON protocol

 


14 hours

3,312 €

Dmix for Android

About

MPDroid is a MPD client for Android. It is a fork of PMix. You can browse your library, control the current song and playlist, manage your outputs, and stream music right to your mobile device. And all of this wrapped up in a beautiful modern Holo design! 

Content

  • Compatibility

  • Libraries

  • Known Issues

  • Roadmap

 


7 hours

1,656 €

CameraEngine

About

The most advanced Camera framework in Swift CameraEngine is an iOS camera engine library that allows easy integration of special capture features and camera customization in your iOS app.

Features

:relaxed: | Support iOS8 - iOS9 :triangular_ruler: | Support orientation device :checkered_flag: | Fast capture :camera: | Photo capture :movie_camera: | Video capture :chart_with_upwards_trend: | quality settings presset video / photo capture :raising_hand: | switch device (front, back) :bulb: | flash mode management :flashlight: | torch mode management :mag_right: | focus mode management :bowtie: | detection face, barecode, and qrcode :rocket: | GIF encoder

Installation

CocoaPods

Carthage

Manually

To add the Framework, you can also create a workspace for your project, then add the CameraEngine.xcodeproj, and the CameraEngine, then you should be able to compile the framework, and import it in your app project. CameraEngine supports swift3, see the development branch for a swift 3 integration.

:rocket: Quick start

First let's init and start the camera session. You can call that in viewDidLoad, or in appDelegate. override func viewDidLoad() { super.viewDidLoad() self.cameraEngine.startSession() } Next time to display the preview layer override func viewDidLayoutSubviews() { let layer = self.cameraEngine.previewLayer

layer.frame = self.view.bounds self.view.layer.insertSublayer(layer, atIndex: 0) self.view.layer.masksToBounds = true }

Capture a photo self.cameraEngine.capturePhoto { (image: UIImage?, error: NSError?) -> (Void) in //get the picture tooked in the image } Capture a video private func startRecording() { guard let url = CameraEngineFileManager.documentPath("video.mp4") else { return }

self.cameraEngine.startRecordingVideo(url, blockCompletion: { (url, error) -> (Void) in }) } private func stopRecording() { self.cameraEngine.stopRecordingVideo() }

Generate animated image GIF guard let url = CameraEngineFileManager.documentPath("animated.gif") else { return } self.cameraEngine.createGif(url, frames: self.frames, delayTime: 0.1, completionGif: { (success, url) -> (Void) in //Do some crazy stuff here })

:wrench: configurations

CameraEngine, allows you to set some parameters, such as management of flash, torch and focus. But also on the quality of the media, which also has an impact on the size of the output file. Flash self.cameraEngine.flashMode = .On self.cameraEngine.flashMode = .Off self.cameraEngine.flashMode = .Auto Torch self.cameraEngine.torchMode = .On self.cameraEngine.torchMode = .Off self.cameraEngine.torchMode = .Auto Focus .Locked | means the lens is at a fixed position .AutoFocus | means setting this will cause the camera to focus once automatically, and then return back to Locked .ContinuousAutoFocus | means the camera will automatically refocus on the center of the frame when the scene changes self.cameraEngine.cameraFocus = .Locked self.cameraEngine.cameraFocus = .AutoFocus self.cameraEngine.cameraFocus = .ContinuousAutoFocus Camera presset Photo self.cameraEngine.sessionPresset = .Low self.cameraEngine.sessionPresset = .Medium self.cameraEngine.sessionPresset = .High Camera presset Video self.cameraEngine.videoEncoderPresset = .Preset640x480 self.cameraEngine.videoEncoderPresset = .Preset960x540 self.cameraEngine.videoEncoderPresset = .Preset1280x720 self.cameraEngine.videoEncoderPresset = .Preset1920x1080 self.cameraEngine.videoEncoderPresset = .Preset3840x2160

:eyes: Object detection

CameraEngine can detect faces, QRcodes, or barcode. It will return all metadata on each frame, when it detects something. To exploit you whenever you want later. Set the detection mode self.cameraEngine.metadataDetection = .Face self.cameraEngine.metadataDetection = .QRCode self.cameraEngine.metadataDetection = .BareCode self.cameraEngine.metadataDetection = .None //disable the detection exploiting face detection self.cameraEngine.blockCompletionFaceDetection = { faceObject in let frameFace = (faceObject as AVMetadataObject).bounds self.displayLayerDetection(frame: frameFace) } exploiting code detection (barecode and QRCode) self.cameraEngine.blockCompletionCodeDetection = { codeObject in let valueCode = codeObject.stringValue let frameCode = (codeObject as AVMetadataObject).bounds self.displayLayerDetection(frame: frameCode) }

:car::dash: Example

You will find a sample project, which implements all the features of CameraEngine, with an interface that allows you to test and play with the settings. To run the example projet, run pod install, because it uses the current prod version of CameraEngine.

Contributors


7 hours

1,656 €

HZExtend

About

HZExtend

HZExtend is a collection of iOS components. It consists of the following several independent components:

  • HZFoundation A set of useful categories for Foundation and UIKit.
  • HZURLManager URL routing library for iOS, support URL rewrite.
  • HZNetwork A useful networking framework based on AFNetworking for iOS, OS X, watchOS, and tvOS.
  • HZORM Provides a beautiful, simple ActiveRecord implementation to interact with the database.

7 hours

1,656 €

A Shell - IOS Terminal

About

a-shell: A terminal for iOS, with multiple windows

The goal in this project is to provide a simple Unix-like terminal on iOS. It uses ios_system for command interpretation, and will ultimately include all commands from the ios_system ecosystem (nslookup, whois, python3, lua, pdflatex, lualatex...) The project uses iPadOS 13 ability to create and manage multiple windows. Each window has its own context, appearance, command history and current directory. newWindow opens a new window, exit closes the current window. For help, type help in the command line. help -l lists all the available commands. help -l | grep command will tell you if your favorite command is already installed. You can change the appearance of a-Shell using config. It lets you change the font, the font size, the background color, the text color and the cursor color. Each window can have its own appearance. config -p will make the settings for the current window permanent, that is used for all future windows. When opening a new window, a-Shell executes the file .profile if it exists. You can use this mechanism to customize further, e.g. have custom environment variables or cleanup temporary files.

AppStore

a-Shell is now available on the AppStore.

Home directory

In iOS, you cannot write in the ~ directory, only in ~/Documents/, ~/Library/ and ~/tmp. Most Unix programs assume the configuration files are in $HOME. So a-Shell changes several environment variables so that they point to ~/Documents. Type env to see them. Most configuration files (Python packages, TeX files, Clang SDK...) are in ~/Library.

Sandbox and Bookmarks

a-Shell uses iOS 13 ability to access directories in other Apps sandbox. Type pickFolder to access a directory inside another App. Once you have selected a directory, you can do pretty much anything you want here, so be careful. All the directories you access with pickFolder are bookmarked, so you can return to them later without pickFolder. You can also bookmark the current directory with bookmark. showmarks will list all the existing bookmarks, jump mark will change the current directory to this specific bookmark, renamemark will let you change the name of a specific bookmark and deletemark will delete a bookmark. A user-configurable option in Settings lets you use the commands s, g, l, r and d instead or as well. If you are lost, cd will always bring you back to ~/Documents/. cd - will change to the previous directory.

Shortcuts

a-Shell is compatible with Apple Shortcuts, giving users full control of the Shell. You can write complex Shortcuts to download, process and release files using a-Shell commands. There are three shortcuts: Shortcuts can be executed either "In Extension" or "In App". "In Extension" means the shortcut runs in a lightweight version of the App, without no graphical user interface. It is good for light commands that do not require configuration files or system libraries (mkdir, nslookup, whois, touch, cat, echo...). "In App" opens the main application to execute the shortcut. It has access to all the commands, but will take longer. Once a shortcut has opened the App, you can return to the Shortcuts app by calling the command open shortcuts://. The default behaviour is to try to run the commands "in Extension" as much as possible, based on the content of the commands. You can force a specific shortcut to run "in App" or "in Extension", with the warning that it won't always work. Both kind of shortcuts run by default in the same specific directory, $SHORTCUTS. Of course, since you can run the commands cd and jump in a shortcut, you can pretty much go anywhere.

Programming / add more commands:

a-Shell has several programming languages installed: Python, Lua, JS, C, C++ and TeX. For C and C++, you compile your programs with clang program.c and it produces a webAssembly file. You can then execute it with wasm a.out. You can also link multiple object files together, make a static library with ar, etc. Once you are satisfied with your program, if you move it to a directory in the $PATH (e.g. ~/Documents/bin) and rename it program.wasm, it will be executed if you type program on the command line. You can also cross-compile programs on your main computer using our specific WASI-sdk, and transfer the WebAssembly file to your iPad or iPhone. Precompiled WebAssembly commands specific for a-Shell are available here: https://github.com/holzschu/a-Shell-commands These include zip, unzip, xz, ffmpeg... You install them on your iPad by downloading them and placing them in the $PATH. We have the limitations of WebAssembly: no sockets, no forks, no interactive user input (piping input from other commands with command | wasm program.wasm works fine). For Python, you can install more packages with pip install packagename, but only if they are pure Python. The C compiler is not yet able to produce dynamic libraries that could be used by Python. TeX files are not installed by default. Type any TeX command and the system will prompt you to download them. Same with LuaTeX files.

VoiceOver

If you enable VoiceOver in Settings, a-Shell will work with VoiceOver: reading commands as you type them, reading the result, letting you read the screen with your finger...


7 hours

1,656 €

CompositeAndroid

About

Composition over inheritance Allows to add functionality into an Android Activity. Just because we all have a BaseActivity in our projects containing too much unused stuff. When it grows, it get unmaintainable.

Possible Usecases

State of the Art

Given you have an Activity showing a list of tweets (TweetStreamActivity) and you want add view tracking.

Inheritance

You could do it with inheritance and use TrackedTweetStreamActivity from now on: public class TrackedTweetStreamActivity extends TweetStreamActivity { @Override protected void onResume() { super.onResume(); Analytics.trackView("stream"); } } more likely you would create a TrackedActivity and extend the TweetStreamActivity from it: public abstract class TrackedActivity extends AppCompatActivity { public abstract String getTrackingName(); @Override protected void onResume() { super.onResume(); Analytics.trackView(getTrackingName()); } } public class TrackedTweetStreamActivity extends TrackedActivity { @Override public String getTrackingName() { return "stream"; } } Both solutions work but don't scale well. You'll most likely end up with big inheritance structures: class MvpActivity extends AppCompatActivity { ... } class BaseActivity extends AppCompatActivity { ... } class BaseMvpActivity extends MvpActivity { ... } class WizardUiActivity extends BaseActivity { ... } class TrackedWizardUiActivity extends WizardUiActivity { ... } class TrackedBaseActivity extends BaseActivity { ... } class TrackedMvpBaseActivity extends BaseMvpActivity { ... }

Delegation

Some libraries out there provide both, a specialized Activity extending AppCompatActivity and a delegate with a documentation when to call which function of the delegate in your Activity. public class TrackingDelegate { /**

  • usage:
  • {@code
  •  
  • @Override
  • protected void onResume() {
  • super.onResume();
  • mTrackingDelegate.onResume();
  • }
  • } */ public void onResume() { Analytics.trackView(""); } } public class TweetStreamActivity extends AppCompatActivity { private final TrackingDelegate mTrackingDelegate = new TrackingDelegate(); @Override protected void onResume() { super.onResume(); mTrackingDelegate.onResume(); } } This is an elegant solution but breaks when updating such a library and the delegate call position has changed. Or when the delegate added new callbacks which don't get automatically implemented by increasing the version number in the build.gradle.

    Composite Android solution

    CompositeAndroid let's you add delegates to your Activity without adding calls to the correct location. Such delegates are called Plugins. A Plugin is able to inject code at every position in the Activity lifecycle. It is able to override every method.


7 hours

1,656 €

RunLoopWorkDistribution

About

iOS Fast Scrolling with RunLoop Work Distribution

  • Go to work when UI thread gets idle. Step aside when UI thread gets busy.
  • If deployed properly, it could:
    • Delay heavy tasks on the UI thread as late as possible.
    • Preload heavy tasks as soon as the UI thread enters its idling mode.
    • Allow you to distribute a heavy task as multiple smaller tasks, thus less blocking when UI thread suddenly gets busy again.
  • 100% thread safe. Always runs on the UI thread.

    What is A RunLoop?

    RunLoop is a while(YES){...} loop that lives within your app's UI thread. It handles all kinds of events when your app is busy, while sleeps like a baby when there's nothing to do, until the next event wakes it up.

    Not All RunLoop Passes are Created Equal

    A RunLoop repeats itself as individual passes. However, not all passes are created equal. High priority passes take over when your app is tracking finger movements, while low priority passes begin to run when scrolling comes to an end and the metal has spare time to work on low priority tasks such as processing networking data. Because the high priority passes are often filled with critical time sensitive tasks. We don't want to interfere with that. So here in this project we are only working in those low priority passes. Focusing on a single type of passes also gives us one huge advantage: all tasks we submit to this type of passes are guaranteed to run on a first-in-first-out sequential basis.

    Why not Simply Multi-threading?

    Too many times when we are optimizing cell drawing code in our cellForRow: method, we find ourselves buried under a bunch of UIKit APIs that are in no way thread safe. Even worse, some of them could easily block the main thread for one or more precious milliseconds. As facebook AsyncDisplayKit teaches us, "Your code usually has less than ten milliseconds to run before it causes a frame drop". Oops.

    Why Distributing the Work Load?

    So here we are executing low priority tasks on the UI thread while the UI thread is free and is about to sleep, so why not dumping those tasks all at once. The UI thread is not busy at that specific moment anyway. Here's why: The next RunLoop pass, be it high or low priority, will never start unless the previous one hits the finishing line. As a result, if we dump too much work into the current low priority pass, and suddenly the high priority pass needs to take over (for example, touch events detected), the high priority pass will have to wait for the low priority task to finish before any touch events could be served. And that's when you notice the glitches. If instead we slice our one big low priority task into smaller pieces, things would look much much different. Whenever high priority passes need to take over, they won't wait for long because every low priority task is now smaller and will be finished in no time. Hence the "Step aside when UI thread gets busy."

    Example

    Along with the source code there's an contrived example illustrating the technique. In the example there's a heavy task that loads and draws 3 big JPG files into the cell's contentView whenever a new cell goes onto the screen. If we follow the convention and load and draw the images right inside the cellForRow: callback, glitches will ensue, since loading and drawing each image takes quite some time even in a simulator. So instead of doing it the old way, we slice our big task into 3 smaller ones, each loading and drawing 1 image. Then we submit the 3 tasks into the low priority tasks queue with the help of DWURunLoopWorkDistribution. Running the example, we can see that glitches are much less frequent now. Besides, instead of loading and drawing images for every indexPath that comes and goes during scrolling, only certain indexPaths now get to do the work, making the whole scrolling process more efficient.


7 hours

1,656 €

AndroidDecompiler

About

The Android Decompile is a script that combines different tools for succesfully decompiling any Android package (APK) to it's Java source-code and resources (including the AndroidManifest.xml, 9-patches, layout files,...). Tools To accomplish the goal of a full decompile we use these tools: Supported Platforms The tools has been built on Mac, but most of it should work on all UNIX environments!

Content

  • Tools

  • Supported platforms

  • Usage

 


7 hours

1,656 €

DexKnifePlugin

About

DexKnife is a simple android gradle plugin to use the patterns of package to smart split the specified classes to multi dex. Also supports android gradle plugin 2.2.0 multidex. Solve android studio enable the native multidex feature, but there will be too many classes in main dex. (See Features 7) It will auto enable when disabled instant-run or in packaging release.(minsdk < 21)**

Update Log

1.6.1: Compatible with android gradle plugin 2.3.0, auto disable when build with ART-Runtime (See Features 8). 1.6.0: Modify: When only -keep is configured, only keep the specified classes. 1.5.9: Compatible with some ancient version of gradle and android gradle plugin. 1.5.8: Compatible with gradle 3.2, fixed use of only support-split and support-keep resulting in an extra large number of classes. 1.5.7: fixed support-split and support-keep are not work. (support-split/support-keepbug) 1.5.6: Experimentally compatible with java 1.7, fix nothing is selected when only -keep. (java 1.7,keep) 1.5.5: support individual filter for suggest maindexlist. (maindexlist) 1.5.5.alpha: Experimentally compatible with android gradle plugin on 2.2.0. ( 2.2.0 plugin) 1.5.4: auto disabled when instant run mode.(instant run DexKnife) 1.5.3: add some track logs and skip DexKnife when jarMerging is null.(jarMergingnull) 1.5.2: fixed the include and exclude path, and supports filtering single class.(includeexclude, ) 1.5.1.exp: Experimentally compatible with android gradle plugin on 2.1.0 2.1.0 plugin 1.5.1: fixed the proguard mode

Features

  1. DexKnife just converts the wildcards of class path to maindexlist.txt, does not participate in other compilation process. It is not automatic tools, you need to have a understanding of the maindexlist features.
  2. If the class can not be found (ie class no def / found) at runtime, enable DexKnife's log function, debug the config of dexKnife and check the config ProGuard. Verify the generated maindexlist.txt match your config. Do not split the classes in the Application class into second dex. (Even if you manually configure the maindexlist will be such a problem.)
  3. DexKnife can only explicitly specify the classes of main dex, can not specify the classes of after the second dex (limitation of dex's param maindexlist). If you need to completely configure the main dex manually, use:
  4. DexKnife does not have dependency detection and requires you to configure it manually because DexKnife does not know your project requirements.
  5. DexKnife uses the original classpath as the configuration, not the obfuscated classpath.
  6. the count of ID that generated by -keep can not overflow 65535, otherwise there will be error of too many class.
  7. If you use the android gradle plugin's native multidex, but the declaration in the manifest is too much, resulting in the number of methods and variables are still overflow, or can not be packaged. You can simply use -suggest-split to move some of the classes in the suggest list out of the main dex.
  8. minsdk < 21. If minsdk >= 21, the android gradle plugin will build with ART-Runtime, MainDexList isn't necessary, DexKnife is auto disable. In debug mode with Android Gradle plugin >= 2.3.0, minsdk is associated with min(Target running device, TargetSdk). Make sure your MinSdkVersion < 21, DexKnife will auto enable in release mode if conditions are compatible.

7 hours

1,656 €

Discover Nightweb for Android

About

Nightweb is an app for Android devices and PCs that connects you to an anonymous, peer-to-peer social network. It is written in Clojure and uses I2P and BitTorrent on the backend. Please see the website for a general overview, and the protocol page for a more in-depth explanation of how it works.

Contents

  • Introduction
  • The Android project with a native UI
  • The backend code that is common to all projects
  • The desktop project with a browser-based UI
  • SVG files for all the image resources
  • The server project with no UI

7 hours

1,656 €

Learn Android Application Testing

About

a process by which application software developed for handheld mobile devices is tested for its functionality, usability, and consistency.[1] Mobile application testing can be an automated or manual type of testing. Mobile applications either come pre-installed or can be installed from mobile software distribution platforms. Global mobile app revenues totaled 69.7 billion USD in 2015, and are predicted to account for US$188.9 billion by 2020.

Bluetooth, GPS, sensors, and Wi-Fi are some of the core technologies at play in wearables. Mobile application testing accordingly focuses on field testing, user focus, and looking at areas where hardware and software need to be tested in unison.

Content

  • Introduction
  • Challenges for Mobile Application testing
  • Types of android application testing
    • Functional
    • Performance
    • Laboratory
    • Memory Leakage
    • Interrupt testing
    • Usability
    • Security
  • Various Tools for android application testing

 

 


7 hours

1,656 €

Discover Android Studio

About

Android Studio is the official integrated development environment (IDE) for Google's Android operating system, built on JetBrains' IntelliJ IDEA software and designed specifically for Android development. It is available for download on Windows, macOS and Linux based operating systems or as a subscription-based service in 2020. It is a replacement for the Eclipse Android Development Tools (E-ADT) as the primary IDE for native Android application development.

Content

  • Introduction
  • Creation of styles, themes, and material designs
  • Setting-up and configuration using the AVD manager
  • Use of support libraries
  • Explore GitHub libraries
  • Use of emulators
  • Improve application performance

 

 


7 hours

1,656 €

Learn Dart Programming

About

Dart is a client-optimized programming language for apps on multiple platforms. It is developed by Google and is used to build mobile, desktop, server, and web applications.

Dart is an object-oriented, class-based, garbage-collected language with C-style syntax. Dart can compile to either native code or JavaScript. It supports interfaces, mixins, abstract classes, reified generics, and type inference.

Content

  • History
  • Usage
  • Isolates
  • Snapshots
  • Native mobile apps
  • Compiling to JavaScript
  • Editors
    • Chrome Dev Editor
    • DartPad
  • SIMD
  • Example
  • Influences from other languages

 


21 hours

4,968 €

Learn Hybrid Mobile Application Development using Ionic

About

Ionic is an open-source framework to develop hybrid mobile apps

Content

  • Services and features
  • Supported platforms
  • Ionic and AngularJS
  • Ionic CLI
  • AngularJS services and Ajax
  • Beautify the application further by calling upon Cordova plugins
  • Acquiring real-time data
  • Deployment and emulator testing

21 hours

4,968 €

Learning Material Design

About

Material Design is design language by Google. It is a design language. Expanding on the "card" motifs that debuted in Google Now, Material Design uses more grid-based layouts, responsive animations and transitions, padding, and depth effects such as lighting and shadows.

Material Design will gradually be extended throughout Google's array of web and mobile products, providing a consistent experience across all platforms and applications. Google has also released application programming interfaces (APIs) for third-party developers to incorporate the design language into their applications. The main purpose of material design is the creation of a new visual language that combines principles of good design with technical and scientific innovation.

Content

  • Overview
  • Samples
  • Implementation

7 hours

1,656 €

Learning Android N Application Development

About

Android Nougat is seventh major version of the Android operating system It is a operating system. It is also a part of Android version history, named after nougat. Android Nougat is developed by Google and Open Handset Alliance. Nougat introduces notable changes to the operating system and its development platform, including the ability to display multiple apps on-screen at once in a split-screen view, support for inline replies to notifications, and an expanded Doze power-saving mode that restricts device functionality once the screen has been off for a period of time. Additionally, the platform switched to an OpenJDK-based Java environment and received support for the Vulkan graphics rendering API, and seamless system updates on supported devices.

Content

  • History
  • Features
    • User experience
    • Platform
    • Security
  • Reception

 


7 hours

1,656 €

Getting Started With UDOO

About

UDOO is a family of single-board computers with an integrated Arduino compatible microcontroller, designed for various purposes, such as computer science education, the world of Makers, the Internet of Things, Artificial Intelligence, Computer Vision, professional development, DIY projects and robotics.

The eponymous UDOO board was launched on Kickstarter in April 2013, reaching a broad consensus. The product line involves four single board computers – UDOO QUAD/DUAL (2013), UDOO NEO (2015), UDOO X86 (2016), UDOO BOLT (2018) – that differ over various aspects, plus the UDOO BLU and the set of UDOO BRICKS.

Content

  • Introduction
  • Creation of prototype circuits using breadboards
  • Develop real-world applications and prototypes using the UDOO board
  • External circuits from Android applications with ADK
  • Use of external sensors
  • Voice recognition and synthesis using Native Android APIs for
  • Use Android networking API to UDOO-connected circuits
  • MQTT libraries

7 hours

1,656 €

Learn Swift 4 Programming

About

Swift is a general-purpose, multi-paradigm, compiled programming language. Swift is mainly influenced by Rust, Haskell, and Ruby. Swift follows a programming paradigm of functional programming, imperative programming, and object-oriented programming. Swift is developed by Chris Lattner and Apple Inc. It is designed by Chris LattnerSupported by macOS, iOS, and Linux Operating Systems.

Content

  • History
    • Platforms
    • Version history
  • Features
    • Closure support
    • String support
    • Access control
    • Optional and chaining
    • Value types
    • Protocol-oriented programming
    • Libraries, runtime, and development
    • Memory management
    • Debugging and other elements
    • 0Performance
  • Comparisons to other languages
  • Development and other implementations

14 hours

3,312 €

Learn Xcode 4

About

Xcode is IDE containing tools for developing for iOS, iPadOS, macOS, watchOS, and tvOS It is a integrated development environment. Xcode is developed by Apple Inc.Supported by Macintosh operating systems, iOS and watchOS Operating Systems.

Content

  • Installation of Xcode 4 iOS 6 Developer Tools
  • Learn Interface Builder
  • Core Image and Core Graphics Frameworks
  • Discover MapKit frameworks
  • iCloud Storage APIs 
  • Intergration of Facecourse, OpenGraph, and Facecourse Query Language (FQL) APIs
  • Deployment in Apple App Store

7 hours

1,656 €

Mahara Beginner's Guide

About

Mahara is a free and open-source web-based electronic portfolio management system. An ePortfolio is a type of web application that allows users to record and share evidence of lifelong learning.

Content

  • Introduction to Mahara
  • Create folders in Mahara
  • Journals, reports, presentations, videos, and sound clips
  • Creating blogs in Mahara
  • Mahara profile field
  • Public or private comments on your photos, videos, and articles
  • Connect with other Mahara users
  • Mahara website administration

7 hours

1,656 €

Explore RubyMotion App Development

About

RubyMotion is an IDE of the Ruby programming language that runs on iOS, OS X and Android. RubyMotion is an open-sourced commercial product created by Laurent Sansonetti for HipByte and is based on MacRuby for OS X. RubyMotion adapted and extended MacRuby to work on platforms beyond OS X.

RubyMotion apps execute in an iOS simulator alongside a read-eval-print loop (REPL) for interactive inspection and modification. 3rd-party Objective-C libraries can be included in a RubyMotion project, either manually or by using a package manager such as CocoaPods. Programs are statically compiled into machine code by use of Rake as its build and execution tool.

RubyMotion projects can be developed with any text editor. The RubyMine IDE provides support for the RubyMotion toolchain, such as code-completion and visual debugging.

Content

  • Feature of RubyMotion
  • Examples in iOS and Android
  • Coding
  • Debugging

 


7 hours

1,656 €

Learn GlassFish Application Server

About

GlassFish is an open-source Jakarta EE platform application server project started by Sun Microsystems, then sponsored by Oracle Corporation, and now living at the Eclipse Foundation and supported by Payara, Oracle and Red Hat. The supported version under Oracle was called Oracle GlassFish Server. GlassFish is free software and was initially dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the Classpath exception. After having been transferred to Eclipse, GlassFish remained dual-licensed, but the CDDL license was replaced by the Eclipse Public License (EPL).

Content

  • Introduction
  • Glassfish Administration
  • Administering GlassFirsh Server with Java EE applications

28 hours

6,624 €


Is learning Mobile Development hard?


In the field of Mobile Development learning from a live instructor-led and hand-on training courses would make a big difference as compared with watching a video learning materials. Participants must maintain focus and interact with the trainer for questions and concerns. In Qwikcourse, trainers and participants uses DaDesktop , a cloud desktop environment designed for instructors and students who wish to carry out interactive, hands-on training from distant physical locations.


Is Mobile Development a good field?


For now, there are tremendous work opportunities for various IT fields. Most of the courses in Mobile Development is a great source of IT learning with hands-on training and experience which could be a great contribution to your portfolio.



Mobile Development Online Courses, Mobile Development Training, Mobile Development Instructor-led, Mobile Development Live Trainer, Mobile Development Trainer, Mobile Development Online Lesson, Mobile Development Education