Currently, Java ME is mainly used for games. Especially there it is very important to know how to handle the low level graphics facilities that are available in Java ME. This includes directly drawing to the screen as well as handling key input yourself. Most major applications also implement their own user interface themselves instead of using the high level UI provided by Java ME. The first challenge of this module is a simply key code analyzer so that you can familiarize yourself with the concepts of the Canvas and event processing. The second challenge is more sophisticated and requires you to write a small paint application.
Contents:
* Canvas
* Key Events
* Game Actions
* Geometry and Text
* Images
* PNG Optimization
The game API is one of the most interesting and unique concepts of Java ME. It consists of very useful classes that help you with typical tasks that are required in almost ever game — for example sprite handling, tiled backgrounds or collision detection. This module will explain those concepts and how to create an own game loop. The challenge is the largest project yet and involves writing your own game called "Schlabo". The player moves his avatar at the bottom of the screen and has to shoot the enemy that moves randomly at the top.
Contents:
* Performance
* Game API
* Game loop
* GameCanvas
* Bitmaps
* Sprite
* Layer and TiledLayer
* LayerManager
International Journal of Engineering Research and Development is an international premier peer reviewed open access engineering and technology journal promoting the discovery, innovation, advancement and dissemination of basic and transitional knowledge in engineering, technology and related disciplines.
Stop running from animations droidcon Londonmaric_iv
Talk from droidcon London
Creating eye candy animations takes time and effort, but the end result is worth it. To make your life a bit easier, in this talk Ivan will share with you 10 tips he learned while working on all sorts of animations. Those tips will help you break your fear of animations and after this talk, you will have no more excuses.
Java ME - 07 - Generic Connection Framework, HTTP and SocketsAndreas Jakl
The speciality of mobile phones is that they are *mobile* and offer access to the internet from anywhere. In this section, you will learn how to use the Generic Connection Framework in Java ME to connect to web servers or other clients using HTTP or sockets directly. The challenge involves creating a client for a multiplayer game similar to "Asteroids", the game server is provided in the downloadable materials.
Contents:
* Generic Connection Framework
* Asynchronous connections
* Hypertext Transfer Protocol
* HTTP Get / HTTP Post
* Sockets
Java ME - 06 - Record Stores, Distribution and LocalizationAndreas Jakl
Almost every application needs to store data — e.g. for saving user preferences, highscores or login data. This module explains the concepts behind the record stores, the only way to save data that is included in the MIDP specification and therefore supported on all phones. Data access can be handled conveniently using the DataInputStream and DataOutputStream-classes.This module also covers how to distribute your applications using different project configurations in NetBeans; a process which can involve pre-processing, selective resource inclusion as well as obfuscation. As mobile phones are available on a global market, localization is also a very important aspect. The challenge involves extending the game from the last course so that the game can save the highscore and can be deployed on phones with different screen sizes using specialized graphics.
Contents:
* Record Stores
o Input/OutputStreams
* Distribution
*
o Deployment
o Pre-Processing
o Obfuscation
o OTA-Deployment
* Localization
The game API is one of the most interesting and unique concepts of Java ME. It consists of very useful classes that help you with typical tasks that are required in almost ever game — for example sprite handling, tiled backgrounds or collision detection. This module will explain those concepts and how to create an own game loop. The challenge is the largest project yet and involves writing your own game called "Schlabo". The player moves his avatar at the bottom of the screen and has to shoot the enemy that moves randomly at the top.
Contents:
* Performance
* Game API
* Game loop
* GameCanvas
* Bitmaps
* Sprite
* Layer and TiledLayer
* LayerManager
International Journal of Engineering Research and Development is an international premier peer reviewed open access engineering and technology journal promoting the discovery, innovation, advancement and dissemination of basic and transitional knowledge in engineering, technology and related disciplines.
Stop running from animations droidcon Londonmaric_iv
Talk from droidcon London
Creating eye candy animations takes time and effort, but the end result is worth it. To make your life a bit easier, in this talk Ivan will share with you 10 tips he learned while working on all sorts of animations. Those tips will help you break your fear of animations and after this talk, you will have no more excuses.
Java ME - 07 - Generic Connection Framework, HTTP and SocketsAndreas Jakl
The speciality of mobile phones is that they are *mobile* and offer access to the internet from anywhere. In this section, you will learn how to use the Generic Connection Framework in Java ME to connect to web servers or other clients using HTTP or sockets directly. The challenge involves creating a client for a multiplayer game similar to "Asteroids", the game server is provided in the downloadable materials.
Contents:
* Generic Connection Framework
* Asynchronous connections
* Hypertext Transfer Protocol
* HTTP Get / HTTP Post
* Sockets
Java ME - 06 - Record Stores, Distribution and LocalizationAndreas Jakl
Almost every application needs to store data — e.g. for saving user preferences, highscores or login data. This module explains the concepts behind the record stores, the only way to save data that is included in the MIDP specification and therefore supported on all phones. Data access can be handled conveniently using the DataInputStream and DataOutputStream-classes.This module also covers how to distribute your applications using different project configurations in NetBeans; a process which can involve pre-processing, selective resource inclusion as well as obfuscation. As mobile phones are available on a global market, localization is also a very important aspect. The challenge involves extending the game from the last course so that the game can save the highscore and can be deployed on phones with different screen sizes using specialized graphics.
Contents:
* Record Stores
o Input/OutputStreams
* Distribution
*
o Deployment
o Pre-Processing
o Obfuscation
o OTA-Deployment
* Localization
Java ME comes with an easy to use user interface framework. This module will show you how the available controls look like and how they can be put together to create your own applications. The challenge is about developing a small rock, paper and scissors game and lets you try the concepts of this and the commands introduced in the previous lesson in a small game.
Contents:
* Form, Alert, List, TextBox, Ticker
* Items:
o ChoiceGroup
o TextField
o Gauge
o DateField
o ImageItem
o Spacer
o CustomItem
* LWUIT, eSWT, JavaFX Mobile
Nearly all of today's PC and console games use 3D graphics. With mobile phones getting more and more powerful and some devices even boasting a hardware 3D acceleration, development using three-dimensional graphics is an important topic for mobile computing. This module covers the JSR 184 (Mobile 3D Graphics) and explores the possibilities offered by its retained mode (high level) API for defining a scene graph and modifying objects in the world. A detailed example walks you through the basics of the free, open source 3D package Blender. Using this powerful software, you can create a sample 3D scene that you can display on your mobile phone with just a few lines of code. The challenge is about extending a sample 3D game framework, featuring an exciting car racing game!
Contents:
* Mobile 3D - Overview
* JSR 184 (m3g)
* Scene graph
* Your first m3g file with Blender
* Display, load and modify the 3D scene
* Objects and materials
* Challenge: 3D car racing game
The quickstart slides contain a quick walkthrough for creating your first project using Carbide.c++ Edition and its new UI-designer (available as a free trial version). The final project will display an image, offer the possibility to enter text and display this text on the screen. A very short overview of relevant Symbian OS topics is given at the appropriate locations. To train your Symbian OS skills, you have to option to complete the challenge, which is a "Guess-a-number"-game. Basic knowledge about Symbian OS is recommended to complete this challenge.
Contents
* Symbian OS naming conventions
* Working with Carbide.c++ Developer Edition
* Creating an S60 project
* Application structure
* Topics: Image control, menu definition, text query dialog, label control
* Short overview about descriptors and leaves
This tutorial is a thorough introduction to the important concepts related to memory management in Symbian OS. Detailed examples explain the reasons behind the concepts and give advice on what you have to do to develop a safe application for Symbian OS.
Contents:
* Leaves, Panics and TRAPD
* Cleanup Stack
* Object construction using ELeave
* Two-phase construction
* Debugging tools
Useful Tools for Making Video Games - XNA (2008)Korhan Bircan
A presentations I gave back in 2008 when I was the teaching assistant for Innovating Game Development course in Brown University.
This is an introductory tutorial of Microsoft XNA Game Studio. I talk about displaying 3D models, handling keyboard and mouse input, 3rd person shooter camera, and creating spline animations.
Java ME - 04 - Timer, Tasks and ThreadsAndreas Jakl
Most mobile applications will have to use asynchronous processing — for running the game loop or for connecting your MIDlet to the Internet. This module is a repetition of the basic thread concepts that you will need for your mobile applications. It also contains details of how to use the Timer to generate regular call-backs. In the first challenge, you will write a small alarm clock based on the high level user interface. The second challenge is about drawing a ball that bounces around on the screen using the low level graphics API.
Contents:
* Timer
* Scheduling
* Threads
* Runnable vs. Thread
I wanted to change the cloudsrectangles into an actuall image it do.pdffeelinggifts
I wanted to change the clouds/rectangles into an actuall image it doesnt matter the image.
import javax.swing.*;
import java.awt.*;
/**
* Created by Thomas on 11/27/2016.
*/
public class Renderer extends JPanel{
//private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
Main.main.repaint(g);
}
public static int clamp(int greenValue, int i, int j) {
// TODO Auto-generated method stub
return 0;
}
}
OTHER PART:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.*;
/**
* Created by Thomas on 11/27/2016.
*/
public class Main implements ActionListener, KeyListener{
public static Main main;
public final int WIDTH = 1400;
public final int HEIGHT = 600;
public HUD Hud;
public Renderer renderer;
public Rectangle character;
public ArrayList cloud;
public Random rand;
public boolean start = false, gameover = false;
public int tick;
public Main() {
JFrame jFrame = new JFrame();
Timer timer = new Timer(20, this);
renderer = new Renderer();
rand = new Random();
jFrame.setTitle(\"Example\");
jFrame.add(renderer);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(WIDTH, HEIGHT);
jFrame.addKeyListener(this);
jFrame.setVisible(true);
cloud = new ArrayList();
character = new Rectangle(200, 220, 20, 20);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
timer.start();
}
public void repaint(Graphics g) {
g.setColor(Color.black);
g.fillRect(0,0, WIDTH, HEIGHT);
g.setColor(Color.blue);
g.fillRect(0, HEIGHT - 100, WIDTH, 100);
g.setColor(Color.green);
g.fillRect(character.x, character.y, character.width, character.height);
if (character.y >= HEIGHT - 100 || character.y < 0) {
gameover = true;
}
for (Rectangle rect : cloud) {
g.setColor(Color.white);
g.fillRect(rect.x, rect.y, rect.width, rect.height);
}
g.setColor(Color.WHITE);
g.setFont(new Font(\"Times New Roman\", 1 ,100));
if (!start) {
g.drawString(\"Press to start!\", 450, HEIGHT / 2);
}
else if (gameover) {
g.drawString(\"Game Over!\", 450, HEIGHT / 2);
}
}
public void addCloud(boolean start) {
int width = 400;
int height = 200;
if (start) {
cloud.add(new Rectangle(WIDTH + width + cloud.size() * 300, rand.nextInt(HEIGHT-120),
80, 100));
}
else {
cloud.add(new Rectangle(cloud.get(cloud.size() - 1).x + 300, rand.nextInt(HEIGHT-120), 80,
100));
}
}
public void flap() {
if (gameover) {
character = new Rectangle(300, 400, 40, 40);
cloud.clear();
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
gameover = false;
}
if (!start) {
start = true;
}
else if (!gameover) {
character.y -= 70;
tick = 0;
}
}
@Override
public void actionPerformed(ActionEvent e) {
int speed = 15;
//System.out.println(\"Space\");
if (start) {
for (int i = 0; i .
Create Engaging Healthcare Experiences with Augmented RealityAndreas Jakl
Would you like to try hands-on how to create your first Augmented Reality app? In this session, you will see how easy it is to use 3D technologies and automated speech processing (through Amazon Sumerian) to explain healthcare-related topics. The session is defined for health professionals with little or no prior experience in app design, who would love to share their knowledge with new didactic methods. Additionally, we will provide a behind-the-scenes look on the use case “Enlightening Patients with Augmented Reality” within the funded research project “Immersive Media Lab”.
Presented at the build.well.being conference on June 14th, 2019:
https://buildwellbeing.fhstp.ac.at/
More information about the contents:
https://www.andreasjakl.com/
AR / VR Interaction Development with UnityAndreas Jakl
Introduction to using C# for making Augmented Reality & Virtual Reality scenes interactive in Unity 2018 and beyond.
The lecture slides first cover the basics of C# and clarify the different C# / .NET settings in Unity. Next, an in-depth look at how GameObjects work behind the scenes from the C# perspective. To complete the necessary basics, Coroutines provide means to handle autonomous code for a better software architecture - but these shouldn't be confused with true asynchronous threads.
The next part is specially geared towards AR / VR: how to implement gaze from the main headset camera. Raycasting provides the necessary search capabilities for the hit target.
How to inform the hit object? The described approach utilizes C# Events. These are a complex topic; therefore, the materials take a deeper look at what's behind Events: Delegates, EventHandler, Actions and UnityEvents.
To wrap up, the examples are completed using a reticle / cursor for raycasts. To put this into context with AR / VR, the examples are based on a canvas to place a 2D sprite in a 3D world space canvas.
Content overview:
- Scripting: Frameworks, APIs and Languages
- GameObjects: Behind the Scenes
- Coroutines
- Gaze & Raycasting
- Delegates, Events & Actions
- Reticle / Cursor for Raycasts, based on a Canvas
Java ME comes with an easy to use user interface framework. This module will show you how the available controls look like and how they can be put together to create your own applications. The challenge is about developing a small rock, paper and scissors game and lets you try the concepts of this and the commands introduced in the previous lesson in a small game.
Contents:
* Form, Alert, List, TextBox, Ticker
* Items:
o ChoiceGroup
o TextField
o Gauge
o DateField
o ImageItem
o Spacer
o CustomItem
* LWUIT, eSWT, JavaFX Mobile
Nearly all of today's PC and console games use 3D graphics. With mobile phones getting more and more powerful and some devices even boasting a hardware 3D acceleration, development using three-dimensional graphics is an important topic for mobile computing. This module covers the JSR 184 (Mobile 3D Graphics) and explores the possibilities offered by its retained mode (high level) API for defining a scene graph and modifying objects in the world. A detailed example walks you through the basics of the free, open source 3D package Blender. Using this powerful software, you can create a sample 3D scene that you can display on your mobile phone with just a few lines of code. The challenge is about extending a sample 3D game framework, featuring an exciting car racing game!
Contents:
* Mobile 3D - Overview
* JSR 184 (m3g)
* Scene graph
* Your first m3g file with Blender
* Display, load and modify the 3D scene
* Objects and materials
* Challenge: 3D car racing game
The quickstart slides contain a quick walkthrough for creating your first project using Carbide.c++ Edition and its new UI-designer (available as a free trial version). The final project will display an image, offer the possibility to enter text and display this text on the screen. A very short overview of relevant Symbian OS topics is given at the appropriate locations. To train your Symbian OS skills, you have to option to complete the challenge, which is a "Guess-a-number"-game. Basic knowledge about Symbian OS is recommended to complete this challenge.
Contents
* Symbian OS naming conventions
* Working with Carbide.c++ Developer Edition
* Creating an S60 project
* Application structure
* Topics: Image control, menu definition, text query dialog, label control
* Short overview about descriptors and leaves
This tutorial is a thorough introduction to the important concepts related to memory management in Symbian OS. Detailed examples explain the reasons behind the concepts and give advice on what you have to do to develop a safe application for Symbian OS.
Contents:
* Leaves, Panics and TRAPD
* Cleanup Stack
* Object construction using ELeave
* Two-phase construction
* Debugging tools
Useful Tools for Making Video Games - XNA (2008)Korhan Bircan
A presentations I gave back in 2008 when I was the teaching assistant for Innovating Game Development course in Brown University.
This is an introductory tutorial of Microsoft XNA Game Studio. I talk about displaying 3D models, handling keyboard and mouse input, 3rd person shooter camera, and creating spline animations.
Java ME - 04 - Timer, Tasks and ThreadsAndreas Jakl
Most mobile applications will have to use asynchronous processing — for running the game loop or for connecting your MIDlet to the Internet. This module is a repetition of the basic thread concepts that you will need for your mobile applications. It also contains details of how to use the Timer to generate regular call-backs. In the first challenge, you will write a small alarm clock based on the high level user interface. The second challenge is about drawing a ball that bounces around on the screen using the low level graphics API.
Contents:
* Timer
* Scheduling
* Threads
* Runnable vs. Thread
I wanted to change the cloudsrectangles into an actuall image it do.pdffeelinggifts
I wanted to change the clouds/rectangles into an actuall image it doesnt matter the image.
import javax.swing.*;
import java.awt.*;
/**
* Created by Thomas on 11/27/2016.
*/
public class Renderer extends JPanel{
//private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
Main.main.repaint(g);
}
public static int clamp(int greenValue, int i, int j) {
// TODO Auto-generated method stub
return 0;
}
}
OTHER PART:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.*;
/**
* Created by Thomas on 11/27/2016.
*/
public class Main implements ActionListener, KeyListener{
public static Main main;
public final int WIDTH = 1400;
public final int HEIGHT = 600;
public HUD Hud;
public Renderer renderer;
public Rectangle character;
public ArrayList cloud;
public Random rand;
public boolean start = false, gameover = false;
public int tick;
public Main() {
JFrame jFrame = new JFrame();
Timer timer = new Timer(20, this);
renderer = new Renderer();
rand = new Random();
jFrame.setTitle(\"Example\");
jFrame.add(renderer);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(WIDTH, HEIGHT);
jFrame.addKeyListener(this);
jFrame.setVisible(true);
cloud = new ArrayList();
character = new Rectangle(200, 220, 20, 20);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
timer.start();
}
public void repaint(Graphics g) {
g.setColor(Color.black);
g.fillRect(0,0, WIDTH, HEIGHT);
g.setColor(Color.blue);
g.fillRect(0, HEIGHT - 100, WIDTH, 100);
g.setColor(Color.green);
g.fillRect(character.x, character.y, character.width, character.height);
if (character.y >= HEIGHT - 100 || character.y < 0) {
gameover = true;
}
for (Rectangle rect : cloud) {
g.setColor(Color.white);
g.fillRect(rect.x, rect.y, rect.width, rect.height);
}
g.setColor(Color.WHITE);
g.setFont(new Font(\"Times New Roman\", 1 ,100));
if (!start) {
g.drawString(\"Press to start!\", 450, HEIGHT / 2);
}
else if (gameover) {
g.drawString(\"Game Over!\", 450, HEIGHT / 2);
}
}
public void addCloud(boolean start) {
int width = 400;
int height = 200;
if (start) {
cloud.add(new Rectangle(WIDTH + width + cloud.size() * 300, rand.nextInt(HEIGHT-120),
80, 100));
}
else {
cloud.add(new Rectangle(cloud.get(cloud.size() - 1).x + 300, rand.nextInt(HEIGHT-120), 80,
100));
}
}
public void flap() {
if (gameover) {
character = new Rectangle(300, 400, 40, 40);
cloud.clear();
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
addCloud(true);
gameover = false;
}
if (!start) {
start = true;
}
else if (!gameover) {
character.y -= 70;
tick = 0;
}
}
@Override
public void actionPerformed(ActionEvent e) {
int speed = 15;
//System.out.println(\"Space\");
if (start) {
for (int i = 0; i .
Create Engaging Healthcare Experiences with Augmented RealityAndreas Jakl
Would you like to try hands-on how to create your first Augmented Reality app? In this session, you will see how easy it is to use 3D technologies and automated speech processing (through Amazon Sumerian) to explain healthcare-related topics. The session is defined for health professionals with little or no prior experience in app design, who would love to share their knowledge with new didactic methods. Additionally, we will provide a behind-the-scenes look on the use case “Enlightening Patients with Augmented Reality” within the funded research project “Immersive Media Lab”.
Presented at the build.well.being conference on June 14th, 2019:
https://buildwellbeing.fhstp.ac.at/
More information about the contents:
https://www.andreasjakl.com/
AR / VR Interaction Development with UnityAndreas Jakl
Introduction to using C# for making Augmented Reality & Virtual Reality scenes interactive in Unity 2018 and beyond.
The lecture slides first cover the basics of C# and clarify the different C# / .NET settings in Unity. Next, an in-depth look at how GameObjects work behind the scenes from the C# perspective. To complete the necessary basics, Coroutines provide means to handle autonomous code for a better software architecture - but these shouldn't be confused with true asynchronous threads.
The next part is specially geared towards AR / VR: how to implement gaze from the main headset camera. Raycasting provides the necessary search capabilities for the hit target.
How to inform the hit object? The described approach utilizes C# Events. These are a complex topic; therefore, the materials take a deeper look at what's behind Events: Delegates, EventHandler, Actions and UnityEvents.
To wrap up, the examples are completed using a reticle / cursor for raycasts. To put this into context with AR / VR, the examples are based on a canvas to place a 2D sprite in a 3D world space canvas.
Content overview:
- Scripting: Frameworks, APIs and Languages
- GameObjects: Behind the Scenes
- Coroutines
- Gaze & Raycasting
- Delegates, Events & Actions
- Reticle / Cursor for Raycasts, based on a Canvas
Android Development with Kotlin, Part 3 - Code and App ManagementAndreas Jakl
- Code Management
- Open Source
- Version Control & Git
- App Stores
- Testing Mobile Apps
- Automated Tests
- Visual Studio App Center
- Espresso Test Recorder
- Firebase Test Lab
- Robo Tests
- App Distribution
In this presentation, you will learn how to add NFC tag reading to an Android app. It registers for auto-starting when the user taps a specific NDEF NFC tag with the phone. In addition, the app reads the NDEF records from the tag.
Further instructions: https://www.andreasjakl.com/nfc-tags-ndef-and-android-with-kotlin/
Open source sample app: https://github.com/andijakl/NfcDemo
- Target Audience (mobile vs. desktop)
- Web site technologies
- Structure & content: HTML / HTML5
- Styling: CSS
- Interactivity & scripting languages: JavaScript
- Behind the Scenes
- Client vs Server
- HTTP and web requests
- IP address & server location
- Accessibility
- Content Management Systems: Wordpress
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & MoreAndreas Jakl
iBeacons (Apple) and Eddystone (Google) have conquered the Bluetooth Beacon market. Both specifications allow to trigger specific actions on a smartphone at a well defined area. How do these formats work, what can you do with Bluetooth Beacons, what's changed for Beacons with Bluetooth 5 and what new possibilities does the Windows 10 Creators Update offer for Bluetooth developers?
More information:
Blog: https://www.andreasjakl.com/
Open Source Bluetooth Beacon Library & Example App: https://github.com/andijakl/universal-beacon/
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?Andreas Jakl
Beacons are one of the hottest topics of mobile development right now. Bluetooth Smart / LE is indispensable for Wearables and the Internet of Things (IoT). NFC is now finally arriving in the mass market.
With Windows 10, Microsoft has significantly expanded the possibilities for proximity technologies. In this overview, you will learn about the new scenarios and see several concrete examples of what is possible and how you can leverage it for your own projects!
Agenda:
NFC
- NFC simulation
- Smart Cards
- Raw NFC tag access
- Host card emulation (HCE)
Bluetooth Smart
- Bluetooth Beacon support
- Beacon specifications (iBeacon, Eddystone & co)
How to use cloud-based app testing to ensure that your mobile app doesn't suffer from bad reviews!
After an overview of the current state of mobile devices (operating system and device fragmentation for Android, iOS and Windows Phone), we take a look at current scientific studies that analyze app store reviews on a large scale, in order to extract useful app quality data.
In order to improve your app's quality, you will have to test a lot. Manual testing is usually limited to a few devices. Therefore, the best solution is often using cloud-based services like the Xamarin Test Cloud, which can test your app with a single click on 1000+ real devices.
You will also learn the basics of setting up your app for cloud-based testing and what kind of data you can extract.
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Andreas Jakl
How to create a cross-platform native app? What is Qt and which platforms does it support?
Get the latest information on the open source, C++ based framework that lets you target Android, iOS and Windows Phone - plus desktop and embedded platforms! Also contains info on contained UI technologies, the Qt dual-licensing model and the roadmap.
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneAndreas Jakl
How to create cross-platform mobile apps with HTML5 that integrate directly into the platform.
By combining several enterprise-class frameworks and tools, you can create apps that run on all mobile devices, developed in a central repository and tool.
In this presentation, you will learn how to create HTML5 apps with the Visual Studio Multi-Device Hybrid Apps plug-in. Apache Cordova is directly integrated and resposible for creating native apps for the mobile platforms.
WinJS can be used as a major UI framework that is now open source and works accross all platforms and browsers.
To check how you can integrate apps deeper with the native platforms, you will also see how to install and use a custom plug-in that enables Near Field Communication (NFC) on both Android and Windows Phone.
Nokia New Asha Platform Developer TrainingAndreas Jakl
In-depth look at the new opportunities and APIs of the Nokia Asha SDK, which enables you to develop apps for the latest phones like the Nokia Asha 501.
The training materials includes a quick overview of the refreshed UX, UI development and iconography, internationalization, phone / network / SIM state detection, file selections, notifications, radio tuner, maps, gestures and porting between different touch and non-touch devices.
The developer training was held by Mopius in Budapest on May 14th and was the world's first on-site training for the new Asha platform, just a few days after the platform's release.
The quick walkthrough will show you how to create your first NFC app for Windows Phone 8.
The NearSpeak app (available soon in the WP Store) writes voice NFC tags - touch the tags again to hear your message! Leave notes for your partner, reminders for yourself, or use them for a fun public social experiment.
This hands-on tutorial will show you how to create this app. You will see how to write a LaunchApp tag using the NDEF Library for Proximity APIs, how to recognize text spoken by the user, and how to use the speech synthesizer to let the phone read the text again.
Note that the instructions require basic knowledge of Windows Phone development.
The three most important NFC (Near Field Communication) scenarios for Windows 8 / Windows Phone 8 (WP8) app developers:
- Discover Your App
- Share to Others
- Seamless Multi-User Games & Collaboration
This presentation describes these three scenarios, and shows you how to implement them in C# from a technical perspective. It contains examples for both Windows 8 and Windows Phone 8 development, based on the new Windows Proximity APIs.
In addition, this presentation contains a quick overview of NFC as a technology, as well as pointers towards tools and documentation, including the open source NDEF library for more powerful and sophisticated NFC tag writing and reading tasks.
Introduction to the Windows 8 Platform Proximity APIs for NFC apps.
Create your own Near Field Communication apps to interact with peers as well as NFC tags. Also introduces the open source NDEF Library for Proximity APIs: http://ndef.codeplex.com/
- Subscribe to proximity messages
- Publish messages to peers and tags (WindowsUri and NDEF records)
- Parse & create NDEF messages (including Smart Posters)
- Launching apps on own and peer devices
- Registering for custom URI schemes and protocols
- LaunchApp tags to directly start the app
- Peer to peer: quick data exchange and long term connections with Wi-Fi Direct / Bluetooth
- Establishing peer to peer socket communications simply by tapping two devices
- User Experience Recommendations for peer to peer apps
NFC Development with Qt - v2.2.0 (5. November 2012)Andreas Jakl
Learn developing Near Field Communication (NFC) apps for Nokia's Symbian and MeeGo phones with step-by-step tutorials!
The three development options Qt, Symbian native and Java ME are outlined. A more detailed explanation shows the Qt Mobility 1.2 APIs to create modern NFC applications for smartphones.
In the final part, step-by-step hands-on tutorials walk you through developing your first two NFC apps. The first demo extends an example from the Qt SDK with reading & writing both URI and text NDEF records to create new sticky notes on the virtual corkboards visible on the screen. The second demo uses the LLCP protocol to create a peer-to-peer chat application between two NFC Forum compatible devices.
Most applications will need to communicate with other services or devices at some point, or at least save settings on the host computer. These concepts are covered in this module.
After introducing the generic concept behind devices, short examples show how to use files.
Afterwards, the module covers networking and its representation in Qt. In addition to providing classes for handling low level sockets, network managers simplify handling web service requests and responses like for the HTTP protocol. At the end, a short section explains the basics of different methods of parsing XML in Qt, including DOM trees, SAX, pull parsing and XQuery/XPath.
A section about internationalization demonstrates the process step-by-step, showing all required components to make your application multi-lingual.
05 - Qt External Interaction and GraphicsAndreas Jakl
This module explores the remaining aspects of writing own widgets and explains how to handle low-level events, which can originate from for example the mouse or the keyboard. Low level painting, however, can not only be used to draw custom widget - a short overview gives you an idea of the power behind the QPainter class. If your application has to manage multiple graphics items or if you want to build a dynamic UI, the section about the graphics view framework will contain an overview of the classes required to build scene-graph-like user interfaces. At the end of this module, a few slides explain optimizing images, which is important to keep the file sizes and loading times down on mobile devices.
This module explains several additional important concepts. These include properties of QObjects, data types, QString and various list types.
Special classes in Qt provide even more convenient APIs if you want to save settings in the right way for the target platform.
At the end, a guide walks you through what you need to know about embedding files and resources into your application.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
2. Disclaimer These slides are provided free of charge at http://www.symbianresources.com and are used during Java ME courses at the University of Applied Sciences in Hagenberg, Austria at the Mobile Computing department ( http://www.fh-ooe.at/mc ) Respecting the copyright laws, you are allowed to use them: for your own, personal, non-commercial use in the academic environment In all other cases (e.g. for commercial training), please contact andreas.jakl@fh-hagenberg.at The correctness of the contents of these materials cannot be guaranteed. Andreas Jakl is not liable for incorrect information or damage that may arise from using the materials. This document contains copyright materials which are proprietary to Sun or various mobile device manufacturers, including Nokia, SonyEricsson and Motorola. Sun, Sun Microsystems, the Sun Logo and the Java™ Platform, Micro Edition are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. Andreas Jakl, 2009 2
3. Contents Low Level Graphics Canvas Key Events Geometry & Text Images Andreas Jakl, 2009 3
4. Hierarchy of Displayables Andreas Jakl, 2009 Display One Display instance / MIDlet Available in all sub-classes of Displayable Command Displayable Methods for drawing to a canvas Canvas Screen Ticker Graphics TextBox Form List Alert Item Spacer CustomItem Choice (Interface) ChoiceGroup StringItem DateField ImageItem TextField Gauge 4
5. Canvas Canvas = base class Derive your own class from Canvas Canvas assigned to the screen like high level UI can be mixed with high level UI! Functionality: Key events (key codes) Pointer events Paint (must be implemented) Visible / invisible Query properties Andreas Jakl, 2009 5
6. Example: Canvas – Quick Overview Andreas Jakl, 2009 6 public class RealReplayMIDletextendsMIDlet { private booleaniFirstStart = true; private MenuCanvasiMainCanvas; publicRealReplayMIDlet() { } protected void startApp() { // Startapp also gets called when the midlet gains foreground again // -> Only initialize everything in the very first start-up. if (iFirstStart) { iMainCanvas = newMenuCanvas(this); // Create the main canvas Display.getDisplay(this).setCurrent(iMainCanvas); // Activate the canvas iFirstStart = false; } } publicvoidpauseApp() { } publicvoiddestroyApp(boolean unconditional) { } public void exit() { destroyApp(true); notifyDestroyed(); } }
7. Example: Canvas – Quick Overview Andreas Jakl, 2009 7 public class MenuCanvasextends Canvas { privateRealReplayMIDletiMidlet; private intiWidth; private intiHeight; publicMenuCanvas(RealReplayMIDletaMidlet) { iMidlet = aMidlet; // Needed to quit the game setFullScreenMode(true); // Activate full screen mode iWidth = getWidth(); // Query screen size iHeight = getHeight(); } public void paint(Graphics aGraphics) { // Draw background aGraphics.setColor(255, 255, 255); aGraphics.fillRect(0, 0, iWidth, iHeight); // [...] } protected void keyPressed(intaKeyCode) { // Process key events [...] repaint(); } }
8. The Life of a Canvas Andreas Jakl, 2009 8 Canvasconstructor display.setCurrent(myCanvas) showNotify() paint() … events … keyPressed() pointerPressed() display.setCurrent(myForm) hideNotify()
10. Canvas – Full Screen setFullScreenMode(false); setFullScreenMode(true); Andreas Jakl, 2009 10
11. Canvas – Show and Hide showNotify() Is called directly before Canvas becomes visible For initialization, e.g. (re)starting a timer hideNotify() Called after becoming invisible Free resources, cancel timers and threads, ... Also called by the AMS when system screens (e.g., incoming call) are displayed on top Query visibility: Displayable.isShown() Andreas Jakl, 2009 11
12. Canvas – Events Events sent to (visible) Canvas Calls methods defined in Canvas base class Key- & pointer-events, commands Serial event delivery No second event is sent before first event is handled (= you left the event handling method) Exception: repaint enforced by you Andreas Jakl, 2009 12
13. Key Events keyPressed(intkeyCode) When a key is pressed down keyRepeated(intkeyCode) Called again and again when the key is held down Frequency depends on mobile phone better: use an own timer until … keyReleased(intkeyCode) When the key is released Andreas Jakl, 2009 13 keyPressed() keyRepeated() keyReleased()
15. Key Codes – Game Actions Phones: no standardized key layout Therefore: game actions – appropriate keys for each phone intgetGameAction (intkeyCode) Andreas Jakl, 2009 15 Defined in the Canvasclass
16. Key Codes – Example Andreas Jakl, 2009 16 protected void keyPressed(intkeycode) { SimplePlayerGUIgui = getGUI(); switch (keycode) { // This variant does not allow handling multiple simultaneous keypresses case Canvas.KEY_NUM1: // (which are not supported by many phones) // Jump backward gui.skip(true); break; caseCanvas.KEY_NUM2: gui.togglePlayer(); break; // [...] caseCanvas.KEY_POUND: gui.changeVolume(false); break; default: // Handle both keys and game actions – keys first, as they might be game actions as well intgameAction = getGameAction(keycode); if (gameAction == Canvas.RIGHT) { // Jump forward gui.skip(false); // [...] } elseif (gameAction == Canvas.FIRE) { gui.togglePlayer(); } } Adapted from the Sun WTK 2.5.2. MobileMediaAPI-examle
17. Canvas – Soft Keys, … Problem: MIDP 2.0 does not define keycode constants for softkeys, delete, ... Different keycodesfor every manufacturer Solutions: Use Commands (problematic: high level menu doesn’t fit to your design!) Compile an own version for every manufacturer Use generic ‘translation’-method – within certain limits Example – left softkeykeycode: -6 (Nokia), -1 (Siemens), -21 (Motorola), 21 (Motorola) Andreas Jakl, 2009 17
18. Canvas – Paint If repaint is necessary (e.g. info dialog was on top of MIDlet) Framework calls Canvas.paint() Request repaint yourself Call: repaint() Optional: specify region paint()will be called automatically andasynchronously, at a “fitting” moment Double Buffering Usually supported and activated Query: booleandblBuf = canvas.isDoubleBuffered(); If not: create off-screen bitmap yourself Andreas Jakl, 2009 18 void keyPressed(int aKeyCode) { // Process key events [...] repaint(); } paint() not called instantly; usually through an extra thread void paint(Graphics g) { // Draw... }
20. Graphics Graphics-object sent to paint() as a parameter Provides methods for drawing of: Line (SOLID or DOTTED) Rectangle (also filled and/or with rounded corners) Arc (part of an ellipse, also filled) Triangle (also filled) Text Images Andreas Jakl, 2009 20 void paint(Graphics g) { // Draw... }
21. Colours Colour is used for all drawing operations that follow (including text) g.setColor(int red, int green, int blue); Usually no 32 bit display: Automatic assignment of nearest displayable colour no colour fidelity Andreas Jakl, 2009 21 void paint(Graphics g) { g.setColor(255, 255, 255); // White g.fillRect(0, 0, getWidth(), getHeight()); // Fill the whole background g.setColor(255, 0, 0); // Red g.drawLine(5, 5, 250, 250); // Centered text g.drawString("Hello", getWidth() / 2, getHeight() / 2, Graphics.HCENTER|Graphics.BASELINE); }
23. Example: g.drawString(“Mopius”, 0, 0, Graphics.HCENTER|Graphics.BASELINE); Canvas Text – Positioning Andreas Jakl, 2009 23 Mopius g.drawString(“Mopius”, 0, 0, Graphics.LEFT|Graphics.TOP); Mopius
24. Recap: OR Andreas Jakl, 2009 24 OR executed for corresponding bits of two values Overview: OR Both values that were combined withor can be retrieved later on Baseline is contained in the combined value!
25. Text – Font Choose through Font-object, then assign to Graphics-obj. Request font based on criteria: Face: monospace, proportional, system Style: plain, bold, italic, underlined Size:large, medium, small Example: Font titleFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD|Font.STYLE_ITALIC, Font.SIZE_LARGE);g.setFont(titleFont);g.drawString(“Test”, 0, 0, Graphics.TOP|Graphics.LEFT); Andreas Jakl, 2009 25
26. Text – Font Sun WTK Nokia Series 40 (Emulator) Andreas Jakl, 2009 26 … mostgamesusetheirownbitmapfonts!
30. Images Main image format for JavaME (must be supported): .png (Portable Network Graphics) Similar to .gif (which was patented until 2003 because of its LZW compression) Features: Compression: works well for graphics, not so well for photos Transparency: support depends on device – 1 bit transparency or full alpha-channel. Query:int levels = [Display].numAlphaLevels() Usually used for phones:8 bit colour depth (file size), 1 bit transparency (compatibility) Andreas Jakl, 2009 30
31. Save PNGs – File Size Reduction Optimized export – Photoshop: Save for Web Further optimization – Pngcrush:http://pmt.sourceforge.net/pngcrush/ Andreas Jakl, 2009 31 Use as few colors as possible (fine gradients compress worse) No dithering (compression gets more difficult) Transparenter Kanal kann gesetzt werden You can set a transparency channel
32. PNG Optimization – Example: 472 x 472 px Andreas Jakl, 2009 32 256 colours, no dither 30,0 kB 64 colours, no dither 16,3 kB 8 colours, no dither 6,3 kB Results: - Not much difference between 256 and 64 colours (especially on a device display), but only half of the file size - Limits of optimization: 8 colours not enough - Dithering at 8 colours: same file size as visually better 64 colours image. Often, dithering is problematic! 8 colours, Diffusion dither 15,9 kB
33. Images Image-class saves picture, independent of the display Variants: Immutable: not modifiable, e.g. when loaded from files, resource bundles or a network.Examples: logos, sprites, … Mutable: modifiable, created by the applicationExamples: off-screen bitmap for double buffering, dynamically modifiable images, images created by the app at runtime for MIDlet file size reasons Andreas Jakl, 2009 33
34. Immutable Images and MIDlets Image file has to be in .jar archive Often, IDEs copy all files of project folders to .jar don’t leave backups or test data in there! Andreas Jakl, 2009 34
35. Image – Example Add an image to the NetBeans-project Create resource folder in the project folder (e.g. /res/) Add folder to the NetBeans-project “Resources” Resource-folder should be included in the packaging process ( project properties) Andreas Jakl, 2009 35 3 1 2
36. Image – Example Load and display the image Andreas Jakl, 2009 36 // Load image as an instance variable // Warning: can take a long time for multiple / large images // -> in that case: asynchronous loading in an own thread! Image titleImg = Image.createImage(“/title.png”);…protected void paint (Graphics g) {g.drawImage(titleImg, 0, 0, Graphics.TOP|Graphics.LEFT);}
37. Mutable Images Created dynamically during runtime Andreas Jakl, 2009 37 classImageDemoCanvasextendsCanvas { privateImagemutableImg; publicImageDemoCanvas () { mutableImg= Image.createImage (10,10); mutableImg.getGraphics().fillArc (0,0,10,10,0,360); } }
38. Conversion Mutable Immutable Mutable Immutable: Immutable Mutable: Andreas Jakl, 2009 38 immutableImg = Image.createImage(mutableImg); Image immutableImg; // theimagetobecopiedimmutableImg = Image.createImage(...); // Create theimmutableimagefrom e.g. a file // Create a mutableimagewiththe same dimensionsImage mutableImg = Image.createImage(immutableImg.getWidth(), immutableImg.getHeight()); // GetthegraphicscontextofthenewmutableimageGraphics g = copy.getGraphics(); // Copytheimmutableimagetothemutableimage (bydrawingit)g.drawImage(immutableImg, 0, 0, TOP|LEFT);