The document provides guidelines for building efficient Android apps. It discusses minimizing permissions, bulk database updates using transactions, importing pre-populated databases, using fused location services, background data updates, being adaptive to different devices and networks, optimizing for text input and speech, geofencing, and intercepting links. The overall guidelines are to follow best practices, minimize permissions, optimize for efficiency and adaptability, and provide a seamless user experience.
This is my presentation from ODTUG Mobile Day in Utrecht the Netherlands. It shows several examples / how to's regarding Oracle's mobile application Framework MAF
Reaching out from ADF Mobile (ODTUG KScope 2014)Luc Bors
The document discusses various features of Oracle ADF Mobile including:
1) Using remote URLs to embed existing web content in mobile apps.
2) Displaying remote files by downloading them locally and opening in native viewers.
3) Integrating REST services like Google Places to embed external data.
4) Embedding Twitter timelines using local HTML and Twitter widgets.
5) Enabling inter-app communication through URL schemes.
6) Implementing push notifications which require a complex setup but allow powerful delivery of messages.
Real Life MAF (2.2) Oracle Open World 2015Luc Bors
Oracle Mobile Application Framework enables you to create apps for both Apple iOS and Android. When you’re building your first Oracle Mobile Application Framework app, you’ll run into issues you can’t solve by reading the Oracle Applications Developer’s Guide, such as skinning, device interaction, creating custom springboards, and more. These issues can all be solved, but there are many different approaches. This session presents solutions to these and other real-life Oracle Mobile Application Framework challenges.
Get On The Audiobus (CocoaConf Boston, October 2013)Chris Adamson
Audiobus is an iOS app that allows other apps to work together as an audio-processing toolchain: play your MIDI keyboard into one app, run it through filters in other apps, and mix it in a third. All in real-time, foreground or background. That such a thing is possible on the locked down iOS platform is remarkable enough, but what's even more remarkable is that hundreds of audio apps have added Audiobus support in the few months since its debut, including Apple's own GarageBand. In this session, we'll take a look at the Audiobus SDK and see how to create inputs, outputs, and filters that can be managed by the Audiobus app to process audio in collaboration with other apps on the device.
ADF Mobile: 10 Things you don't get from the developers guideLuc Bors
Real Life ADF Mobile: 10 things you don't learn from the devguide
Oracle ADF Mobile has been around for over a year by now. There is a great developer guide available for everybody who wants to create an ADF Mobile application. However, when you are building your first ADF Mobile application you will definitely run into issues that cannot be solved by reading the developer guide.
Think of performance issues when taking pictures with modern devices. Images can take up to 5 Megabytes. What can you do to create a grid like springboard ? These are all topics not covered by the developer guide or by any available ADF mobile training.
In this session you will learn solutions for these and more real life ADF Mobile issues.
George Wilson presented on modern cloud architecture and automation for websites built with content management systems like Joomla. He demonstrated how to automate the deployment of a Joomla site on AWS using just 7 commands and a configuration file. This included uploading the code, creating the application version, and provisioning the environment. Wilson discussed the rise of using CLIs and APIs to manage websites and their content programmatically. Documenting APIs with OpenAPI/Swagger was presented as a best practice. While these techniques may not apply to all Joomla sites, Wilson argued they are relevant for many sites in Joomla's target markets that prioritize agility and automation.
This is my presentation from ODTUG Mobile Day in Utrecht the Netherlands. It shows several examples / how to's regarding Oracle's mobile application Framework MAF
Reaching out from ADF Mobile (ODTUG KScope 2014)Luc Bors
The document discusses various features of Oracle ADF Mobile including:
1) Using remote URLs to embed existing web content in mobile apps.
2) Displaying remote files by downloading them locally and opening in native viewers.
3) Integrating REST services like Google Places to embed external data.
4) Embedding Twitter timelines using local HTML and Twitter widgets.
5) Enabling inter-app communication through URL schemes.
6) Implementing push notifications which require a complex setup but allow powerful delivery of messages.
Real Life MAF (2.2) Oracle Open World 2015Luc Bors
Oracle Mobile Application Framework enables you to create apps for both Apple iOS and Android. When you’re building your first Oracle Mobile Application Framework app, you’ll run into issues you can’t solve by reading the Oracle Applications Developer’s Guide, such as skinning, device interaction, creating custom springboards, and more. These issues can all be solved, but there are many different approaches. This session presents solutions to these and other real-life Oracle Mobile Application Framework challenges.
Get On The Audiobus (CocoaConf Boston, October 2013)Chris Adamson
Audiobus is an iOS app that allows other apps to work together as an audio-processing toolchain: play your MIDI keyboard into one app, run it through filters in other apps, and mix it in a third. All in real-time, foreground or background. That such a thing is possible on the locked down iOS platform is remarkable enough, but what's even more remarkable is that hundreds of audio apps have added Audiobus support in the few months since its debut, including Apple's own GarageBand. In this session, we'll take a look at the Audiobus SDK and see how to create inputs, outputs, and filters that can be managed by the Audiobus app to process audio in collaboration with other apps on the device.
ADF Mobile: 10 Things you don't get from the developers guideLuc Bors
Real Life ADF Mobile: 10 things you don't learn from the devguide
Oracle ADF Mobile has been around for over a year by now. There is a great developer guide available for everybody who wants to create an ADF Mobile application. However, when you are building your first ADF Mobile application you will definitely run into issues that cannot be solved by reading the developer guide.
Think of performance issues when taking pictures with modern devices. Images can take up to 5 Megabytes. What can you do to create a grid like springboard ? These are all topics not covered by the developer guide or by any available ADF mobile training.
In this session you will learn solutions for these and more real life ADF Mobile issues.
George Wilson presented on modern cloud architecture and automation for websites built with content management systems like Joomla. He demonstrated how to automate the deployment of a Joomla site on AWS using just 7 commands and a configuration file. This included uploading the code, creating the application version, and provisioning the environment. Wilson discussed the rise of using CLIs and APIs to manage websites and their content programmatically. Documenting APIs with OpenAPI/Swagger was presented as a best practice. While these techniques may not apply to all Joomla sites, Wilson argued they are relevant for many sites in Joomla's target markets that prioritize agility and automation.
This document discusses how to add notifications, broadcast receivers, services, and sync adapters to Android apps. It covers creating basic notifications using NotificationCompat.Builder, showing notifications using the NotificationManager, and adding actions and expanded layouts to notifications. It also explains how to create broadcast receivers by extending BroadcastReceiver and registering receivers statically in the manifest or dynamically in code.
This document summarizes an Android design course presented by Yonatan Levin. It discusses:
1. The history and goals of the course, which aims to teach designers and developers how to better integrate and communicate through hands-on lessons and a hackathon.
2. Logistics of the course including its schedule over multiple sessions and expectations for watching online videos between lessons.
3. Key technical concepts in Android design like using density-independent pixels (dp) to account for different screen densities, providing multiple versions of assets, and naming conventions.
The document discusses best practices for memory management in Android applications to avoid memory leaks and improve performance. It provides 3 key points:
1. Be aware of common memory issues like frequent garbage collection, memory leaks from non-static inner classes or long-lived references to activities.
2. Learn techniques for detecting memory problems like using LeakCanary, tracking allocations or dumping the Java heap.
3. Apply practices like reusing objects, avoiding non-static inner classes, and cleaning up references in lifecycle methods to optimize memory usage and prevent leaks.
The document discusses Loaders and Adapters in Android. It begins with an introduction to Loaders, explaining that they allow loading data asynchronously while coordinating with the Activity lifecycle. It covers how Loaders work, including the Loader, LoaderCallbacks and LoaderManager classes. It then provides an example of creating a simple Loader. The document next discusses preparing an Activity to use a Loader. It moves on to discussing the CursorLoader for querying ContentProviders. The second part of the document covers Adapters, their role in bridging data and views. It mentions common Adapter implementations like ArrayAdapter and CursorAdapter.
This document summarizes a session on activities and intents from the Android Academy. It covered:
1. Three ways to set listeners on buttons - declaring in XML, inline anonymous classes, and implementing an interface. The observer pattern was used for listeners.
2. Making toasts using the static factory method pattern. Toasts provide simple feedback to the user.
3. Using intents to navigate between activities both explicitly and implicitly. Intents can pass optional extras between activities.
4. Storing persistent data with SharedPreferences which can save data between sessions.
5. Broadcasting messages between loosely coupled components with broadcast receivers. Security concerns with broadcasts were also discussed.
This document provides information about an Android Academy event on views, styles, themes, and qualifiers. It includes an agenda for the event that covers views, styles and themes, custom views, and qualifiers. It also includes explanations and examples of key concepts like views, view groups, measure, layout, draw, weights, gravity, padding vs margin, and state list resources.
Lecture #1 Creating your first android projectVitali Pekelis
1. The document discusses setting up a basic Android project structure including an activity, layout, and manifest.
2. It explains how to create an activity class that extends Activity and sets the layout view. The activity is declared in the manifest.
3. Basic instructions are provided for running the app on a real device or emulator from Android Studio.
The document provides information about an Android Academy event on data integration. It includes an agenda that covers databases, SQLite, and content providers. It also includes sample SQL queries and explanations of CRUD operations. The document demonstrates how to use a SQLiteOpenHelper to simplify database management in Android.
This document provides information about an Android Academy community event on Material Design concepts and implementation. It begins with introducing Jonathan Yarkoni from IronSource who will be presenting. It then provides details about the event, including that it will cover Material Design concepts, properties, and components like navigation. The document discusses Material Design principles and how they were developed. It provides examples of Material components like cards, toolbars, and tabs. Finally, it discusses implementing Material Design on older Android versions using the Android Support Library.
This document summarizes an Android design workshop held by Britt Barak and Figure 8. The workshop covered topics like color, imagery, meaningful motion, and the Android design vision. Attendees learned about using color palettes and themes, different types of images like bitmaps and vectors, animation principles, and how to design intuitive and delightful experiences for Android users. The workshop provided practical tips and examples to help developers and designers create high-quality Android apps adhering to Material Design standards.
Android Pro Tips - IO 13 reloaded EventRan Nachmany
These are the slides I used in my PrtoTip trilogy talk during IO #13 Reloaded GDG meetup (http://www.meetup.com/GDG-Herzeliya/events/121409372/).
It covers a broad range of Android development tips.
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013Amazon Web Services
Increasingly, mobile and other connected devices are leveraging the scalability and capabilities of the cloud to deliver services to end users. However, connecting these devices to the cloud presents unique challenges. Resource constraints make it impossible to use many common frameworks and transport restrictions make it difficult to use dynamic cloud resources. In this session, learn how you can develop and deploy highly-scalable global solutions using Amazon Web Services (Amazon Virtual Private Cloud, Elastic IP addresses, Amazon Route 53, Auto Scaling) and tools like Puppet. Hear how Panasonic and Banjo architect their cloud infrastructure from both a start-up and enterprise perspective.
Building A Mobile First API When You're Not Mobile First - Tyler SingletaryProgrammableWeb
The document discusses Klout's evolution of their APIs to better support mobile use cases. Originally, Klout's Partner API was not mobile optimized, but they later redesigned it to be mobile-friendly by making it JSON-only, easy to access data in two calls, and optimizing payloads for mobile. They also created a separate Mobile API optimized for mobile apps with view-oriented payloads. However, they realized having separate Partner and Mobile APIs created issues, so they moved to a single API approach using entitlements to segment data for different use cases. The document outlines best practices for designing mobile-friendly APIs such as using entitlements, optimizing payloads, limiting requests, and following classic client-server principles.
Collection of tips & tricks that makes the difference between a good app and a "wow-affect" app. Relevant to product managers and developers (including some code samples)
As presented in DroidCon Tel Aviv 2014 by:
Ran Nachmany, MobiliUp
http://il.droidcon.com
Klout redesigned their APIs in 2012 to better support mobile applications. They created a Master API that feeds both their Mobile API and Partner API. The Mobile API provides optimized payloads for mobile with all needed data in one request to reduce requests. They realized they should have created a separate Mobile Partner API to more easily support third-party mobile app development. The document outlines best practices for mobile APIs, including minimizing data payloads and requests, handling errors, and designing for failure and changes.
The Mobile Web Revealed For The Java Developerbalunasj
This document summarizes a presentation about developing for the mobile web using Java technologies. It discusses native mobile apps, mobile web apps, and hybrid apps. It recommends using a framework like JSF 2 and RichFaces which provides standard-based mobile support today and advanced features in development, allowing the use of as much or as little of the Java EE stack as needed. It also discusses HTML5, CSS3, device detection, and orientation support to optimize mobile web experiences.
Uncovering breaking changes behind UI on mobile applicationsKazuaki Matsuo
Capturing HTTP requests during automated tests using a proxy server can help uncover breaking changes in the non-UI layers of mobile applications. The author conducted a case study capturing requests over Appium test scenarios for a long-running app with multiple developers. This uncovered issues like logs being incorrectly reused between views. Placing logs in fragments posed problems if those fragments were used across views. Changes like moving to new programming languages could also inadvertently affect log behavior if not implemented carefully.
This document discusses various cross-device service discovery technologies including UPnP, Bonjour, WiFi P2P, and WiFi Aware. It provides an overview of the protocol stack and key operations for each including addressing, discovery, description/publication, control/resolution, and eventing. It compares their approaches and relationships. While each targets service discovery, they operate at different layers and can complement each other. For example, WiFi technologies enable device discovery and clustering while UPnP and Bonjour allow service sharing on top.
Personalisation in smart phones requires adaptability to dy-
namic context based on application usage and sensor inputs. Current
personalisation approaches do not provide sucient adaptability to dy-
namic and unexpected context. This paper introduces the Android Ge-
netic Programming Framework (AGP) as a personalisation method for
smart phones. AGP considers the specic design challenges of smart
phones, such as resource limitation, and the Android programming envi-
ronment. We demonstrate AGP's utility through empirical experiments
on two applications: a news reader application and an energy ecient
localisation application. Results show that AGP successful adapts appli-
cation behaviour to user context.
This document discusses Android services for background execution in mobile applications. It defines services and how they differ from threads, describes the various types of services and how to create them using the Android service wizard in RAD Studio. It also demonstrates services and discusses restrictions and workarounds. Resources for learning more about services are provided.
There's a large number of libraries available for Android but who has the time to try them all? In this lecture we'll show you a few libraries which we use on daily basis and explain how they can help you to get the job done faster.
https://www.youtube.com/watch?v=9yxj9bxQ9H4
This document discusses how to add notifications, broadcast receivers, services, and sync adapters to Android apps. It covers creating basic notifications using NotificationCompat.Builder, showing notifications using the NotificationManager, and adding actions and expanded layouts to notifications. It also explains how to create broadcast receivers by extending BroadcastReceiver and registering receivers statically in the manifest or dynamically in code.
This document summarizes an Android design course presented by Yonatan Levin. It discusses:
1. The history and goals of the course, which aims to teach designers and developers how to better integrate and communicate through hands-on lessons and a hackathon.
2. Logistics of the course including its schedule over multiple sessions and expectations for watching online videos between lessons.
3. Key technical concepts in Android design like using density-independent pixels (dp) to account for different screen densities, providing multiple versions of assets, and naming conventions.
The document discusses best practices for memory management in Android applications to avoid memory leaks and improve performance. It provides 3 key points:
1. Be aware of common memory issues like frequent garbage collection, memory leaks from non-static inner classes or long-lived references to activities.
2. Learn techniques for detecting memory problems like using LeakCanary, tracking allocations or dumping the Java heap.
3. Apply practices like reusing objects, avoiding non-static inner classes, and cleaning up references in lifecycle methods to optimize memory usage and prevent leaks.
The document discusses Loaders and Adapters in Android. It begins with an introduction to Loaders, explaining that they allow loading data asynchronously while coordinating with the Activity lifecycle. It covers how Loaders work, including the Loader, LoaderCallbacks and LoaderManager classes. It then provides an example of creating a simple Loader. The document next discusses preparing an Activity to use a Loader. It moves on to discussing the CursorLoader for querying ContentProviders. The second part of the document covers Adapters, their role in bridging data and views. It mentions common Adapter implementations like ArrayAdapter and CursorAdapter.
This document summarizes a session on activities and intents from the Android Academy. It covered:
1. Three ways to set listeners on buttons - declaring in XML, inline anonymous classes, and implementing an interface. The observer pattern was used for listeners.
2. Making toasts using the static factory method pattern. Toasts provide simple feedback to the user.
3. Using intents to navigate between activities both explicitly and implicitly. Intents can pass optional extras between activities.
4. Storing persistent data with SharedPreferences which can save data between sessions.
5. Broadcasting messages between loosely coupled components with broadcast receivers. Security concerns with broadcasts were also discussed.
This document provides information about an Android Academy event on views, styles, themes, and qualifiers. It includes an agenda for the event that covers views, styles and themes, custom views, and qualifiers. It also includes explanations and examples of key concepts like views, view groups, measure, layout, draw, weights, gravity, padding vs margin, and state list resources.
Lecture #1 Creating your first android projectVitali Pekelis
1. The document discusses setting up a basic Android project structure including an activity, layout, and manifest.
2. It explains how to create an activity class that extends Activity and sets the layout view. The activity is declared in the manifest.
3. Basic instructions are provided for running the app on a real device or emulator from Android Studio.
The document provides information about an Android Academy event on data integration. It includes an agenda that covers databases, SQLite, and content providers. It also includes sample SQL queries and explanations of CRUD operations. The document demonstrates how to use a SQLiteOpenHelper to simplify database management in Android.
This document provides information about an Android Academy community event on Material Design concepts and implementation. It begins with introducing Jonathan Yarkoni from IronSource who will be presenting. It then provides details about the event, including that it will cover Material Design concepts, properties, and components like navigation. The document discusses Material Design principles and how they were developed. It provides examples of Material components like cards, toolbars, and tabs. Finally, it discusses implementing Material Design on older Android versions using the Android Support Library.
This document summarizes an Android design workshop held by Britt Barak and Figure 8. The workshop covered topics like color, imagery, meaningful motion, and the Android design vision. Attendees learned about using color palettes and themes, different types of images like bitmaps and vectors, animation principles, and how to design intuitive and delightful experiences for Android users. The workshop provided practical tips and examples to help developers and designers create high-quality Android apps adhering to Material Design standards.
Android Pro Tips - IO 13 reloaded EventRan Nachmany
These are the slides I used in my PrtoTip trilogy talk during IO #13 Reloaded GDG meetup (http://www.meetup.com/GDG-Herzeliya/events/121409372/).
It covers a broad range of Android development tips.
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013Amazon Web Services
Increasingly, mobile and other connected devices are leveraging the scalability and capabilities of the cloud to deliver services to end users. However, connecting these devices to the cloud presents unique challenges. Resource constraints make it impossible to use many common frameworks and transport restrictions make it difficult to use dynamic cloud resources. In this session, learn how you can develop and deploy highly-scalable global solutions using Amazon Web Services (Amazon Virtual Private Cloud, Elastic IP addresses, Amazon Route 53, Auto Scaling) and tools like Puppet. Hear how Panasonic and Banjo architect their cloud infrastructure from both a start-up and enterprise perspective.
Building A Mobile First API When You're Not Mobile First - Tyler SingletaryProgrammableWeb
The document discusses Klout's evolution of their APIs to better support mobile use cases. Originally, Klout's Partner API was not mobile optimized, but they later redesigned it to be mobile-friendly by making it JSON-only, easy to access data in two calls, and optimizing payloads for mobile. They also created a separate Mobile API optimized for mobile apps with view-oriented payloads. However, they realized having separate Partner and Mobile APIs created issues, so they moved to a single API approach using entitlements to segment data for different use cases. The document outlines best practices for designing mobile-friendly APIs such as using entitlements, optimizing payloads, limiting requests, and following classic client-server principles.
Collection of tips & tricks that makes the difference between a good app and a "wow-affect" app. Relevant to product managers and developers (including some code samples)
As presented in DroidCon Tel Aviv 2014 by:
Ran Nachmany, MobiliUp
http://il.droidcon.com
Klout redesigned their APIs in 2012 to better support mobile applications. They created a Master API that feeds both their Mobile API and Partner API. The Mobile API provides optimized payloads for mobile with all needed data in one request to reduce requests. They realized they should have created a separate Mobile Partner API to more easily support third-party mobile app development. The document outlines best practices for mobile APIs, including minimizing data payloads and requests, handling errors, and designing for failure and changes.
The Mobile Web Revealed For The Java Developerbalunasj
This document summarizes a presentation about developing for the mobile web using Java technologies. It discusses native mobile apps, mobile web apps, and hybrid apps. It recommends using a framework like JSF 2 and RichFaces which provides standard-based mobile support today and advanced features in development, allowing the use of as much or as little of the Java EE stack as needed. It also discusses HTML5, CSS3, device detection, and orientation support to optimize mobile web experiences.
Uncovering breaking changes behind UI on mobile applicationsKazuaki Matsuo
Capturing HTTP requests during automated tests using a proxy server can help uncover breaking changes in the non-UI layers of mobile applications. The author conducted a case study capturing requests over Appium test scenarios for a long-running app with multiple developers. This uncovered issues like logs being incorrectly reused between views. Placing logs in fragments posed problems if those fragments were used across views. Changes like moving to new programming languages could also inadvertently affect log behavior if not implemented carefully.
This document discusses various cross-device service discovery technologies including UPnP, Bonjour, WiFi P2P, and WiFi Aware. It provides an overview of the protocol stack and key operations for each including addressing, discovery, description/publication, control/resolution, and eventing. It compares their approaches and relationships. While each targets service discovery, they operate at different layers and can complement each other. For example, WiFi technologies enable device discovery and clustering while UPnP and Bonjour allow service sharing on top.
Personalisation in smart phones requires adaptability to dy-
namic context based on application usage and sensor inputs. Current
personalisation approaches do not provide sucient adaptability to dy-
namic and unexpected context. This paper introduces the Android Ge-
netic Programming Framework (AGP) as a personalisation method for
smart phones. AGP considers the specic design challenges of smart
phones, such as resource limitation, and the Android programming envi-
ronment. We demonstrate AGP's utility through empirical experiments
on two applications: a news reader application and an energy ecient
localisation application. Results show that AGP successful adapts appli-
cation behaviour to user context.
This document discusses Android services for background execution in mobile applications. It defines services and how they differ from threads, describes the various types of services and how to create them using the Android service wizard in RAD Studio. It also demonstrates services and discusses restrictions and workarounds. Resources for learning more about services are provided.
There's a large number of libraries available for Android but who has the time to try them all? In this lecture we'll show you a few libraries which we use on daily basis and explain how they can help you to get the job done faster.
https://www.youtube.com/watch?v=9yxj9bxQ9H4
Mobile Performance Testing - Testing the ServerXBOSoft
This document discusses testing the server side performance of mobile websites. It begins with introducing the importance and challenges of mobile performance testing. It then outlines an agenda covering differences between mobile and desktop usage, steps to take in testing including simple comparison, performance and load tests, and optimization strategies. Specifically, it recommends starting with basic tests to compare a site on desktop vs mobile, then using tools like WebPagetest to analyze performance, and finally gradually increasing load on servers. The overall goal is to help organizations prevent mobile performance issues through early and frequent testing.
Being Epic: Best Practices for Android DevelopmentReto Meier
This document provides best practices for Android development. It discusses five "deadly sins" to avoid: sloth (being slow and unresponsive), gluttony (using system resources irresponsibly), hostility (fighting users), arrogance (fighting the system), and discrimination. It also discusses five "glorious virtues" to embrace: beauty (design), generosity (sharing), ubiquity (being everywhere), utility (being useful), and epicness (being legendary). It covers topics like performance, wake locks, navigation, preferences, undocumented APIs, screen sizes, analytics, background updates, location services, and more. The overall message is to create high-quality, useful apps that respect users and system resources.
Eric Proegler Oredev Performance Testing in New ContextsEric Proegler
Virtualization, Cloud Deployments, and Cloud-Based Tools have challenged and changed performance testing practices. Today’s performance tester can summons tens of thousands of virtual users from the cloud in a few minutes at a cost far lower than the expensive on-premise installations of yesteryear.
Meanwhile, systems under test have changed more. Updated software stacks have increased the complexity of scripting and performance measurement, but the biggest changes are in the nature and quantities of resources powering the systems. Interpreting resource usage when resources are shared on a private virtualization platform is exceedingly difficult. Understanding resources when they live in a large public cloud is impossible.
DEFCON 18- These Aren't the Permissions You're Looking ForMichael Scovetta
This document discusses various ways that an Android application can access protected application programming interfaces (APIs) and permissions without explicitly declaring them in the app's manifest. It describes techniques like using Toast notifications to cause a denial of service crash in the system server and gain root access, as well as leveraging implicit broadcasts and custom URI schemes to enable capabilities without permissions. The document warns that these techniques allow apps to perform actions secretly without consent from the user.
DevOps in the Amazon Cloud – Learn from the pioneersNetflix suroGaurav "GP" Pal
DevOps helps accelerate the delivery of software applications through automation and by removing Development & Operations silos. The Netflix Platform Engineering team has developed a robust data pipeline solution called SURO that has been open sourced. Come learn from the experiences of pioneers like Netflix how they are leveraging the data pipeline for new and innovative use cases. This is the presentation by Danny Yuan, Netflix Platform Engineering Team on operational and monitoring aspects of applications on cloud platforms.
The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...DroidConTLV
The document discusses tips for building a great mobile app from the Rounds Android team's experience with their app. It emphasizes supporting many devices and languages, having a robust and crash-free app, using responsive UI design, and surprising and delighting users. Technical strategies discussed include using an executor service for background threads, an IntentService for asynchronous tasks, and events via broadcasts to communicate between components. The goal is to scale the app while keeping it fast, reliable and a great experience for users.
The “Rounds Project” - Growing from thousands to millions - Tips and tricks from the battlefield. How to create a "crash-free", responsive, fun app that serves millions of users
The document discusses MotionLayout, a library that allows for animations and transitions between layouts in Android using ConstraintLayout. Key components of MotionLayout include MotionScene, ConstraintSet, and Transition. ConstraintSet defines start and end states, Transition defines the animation between them, and MotionScene ties it all together. Custom attributes can also be animated between states.
The document discusses MotionLayout in ConstraintLayout 2.0, which allows defining animations through ConstraintSets and transitions between them. It provides an example of a basic animation created by switching between start and end ConstraintSets defined in a MotionScene file. The animation can be triggered by a button click and handles moving a view from the left to the right of its parent layout over 1000 milliseconds.
The document discusses features from Google I/O and Android Q, including:
- Kotlin and in-app updates
- Changes in Android Q like the new navigation system, scoped storage, location permissions, settings panel actions, and dark mode
- Implementing dark theme support using DayNight and setting different themes for light and dark modes
This document summarizes a presentation on new features in Google I/O and Android Q. It discusses Kotlin, in-app updates, the new navigation system in Android Q including gestures, scoped storage, location changes, dark mode, and Jetpack improvements for security and compose. The navigation system in Android Q uses gestures for navigation rather than buttons. Developers need to account for the safe zone and can exclude areas from gestures. In-app updates allow flexible or immediate updates within an app.
The document discusses Clean Architecture and provides an example of implementing it using a Movie Night app. It describes separating the app into Presentation, Data, and Domain layers with specific responsibilities. The Domain layer contains entities, use cases, and interfaces. The Data layer encapsulates data sources and mappers. The Presentation layer connects everything using ViewModels, LiveData, and observing lifecycle changes. It demonstrates how data flows from the Data layer through UseCases to the Presentation layer and updates the UI.
This document provides information about an Android development community and courses. It includes details about course topics like fundamentals, UI/UX, and advanced topics. It lists mentors and their backgrounds. Event details are provided for courses in Moscow and a mentors program. Links are included to sign up for courses and view the community on Facebook.
The document discusses Retrofit, a type-safe HTTP client for Android. It describes how to initialize Retrofit by defining interfaces for APIs, creating a Retrofit instance, and making network calls. It also covers using interceptors to log requests/responses and add authentication headers to requests. Custom interceptors allow controlling the behavior of authentication based on internal request headers.
The document discusses threads and handlers in Android. It contains the following key points:
1. Threads allow for concurrent execution while the main thread is responsible for UI updates. Additional threads can be used for network requests and background tasks.
2. Handlers allow threads to communicate by posting messages and runnables to a message queue. This avoids direct method calls between threads.
3. The main thread has a looper by default while custom threads require adding a looper. Handlers are used to post tasks from a thread's looper queue back to the main thread for UI updates.
This document provides wifi login credentials for Samsung-Next-Guest with the password NEXT@tlv4ever. It then introduces the largest Android community in Israel and lists its staff, activities, and locations. It promotes an IDC entrepreneurship program and provides details on its structure, mentors, advisory board, and past alumni. Finally, it advertises upcoming Android advanced courses on UI, GPU, animations, clean architecture, CPU, memory, and threads.
All the support you need. Support libs in AndroidVitali Pekelis
The support library provides support for older Android versions by backporting new features and components. It includes libraries for app compatibility, fragments, cardview, recyclerview and more. The support library works by including shims that check the Android version and use the native implementation where available, or a support version as needed. It is important to use consistent support library versions and follow best practices around configuration, versioning and compatibility. The support library continues to be updated regularly with new features, bug fixes and improvements to support developers.
This document provides best practices for developing SDKs. It discusses defining the SDK's purpose and services, planning the public API with an easy to use builder pattern and exceptions, planning the internal architecture with minimal dependencies and permissions, writing code with unique prefixes and lifecycle considerations, including sample apps and documentation, packaging as an AAR file, and tools for testing like Battery Historian and Stetho.
The document provides an overview of dependency injection and how it can be implemented using Dagger2 in Android. It discusses dependency injection principles like constructor injection and how modules, components, and clients work together in Dagger2. Key points covered include defining module classes to provide dependencies, component classes to assemble modules and inject clients, and using dependency injection annotations like @Inject in client classes. The document emphasizes best practices like separating dependencies into multiple modules and avoiding direct instantiation in clients.
This document discusses an upcoming hackathon and provides an agenda for a session on design patterns. The session will cover topics like code smells, different categories of design patterns (creational, structural, behavioral), and examples from Android like the Observer pattern implemented in ViewTreeObserver and builder patterns like AlertDialog.Builder and NotificationCompat.Builder. The goals are to learn about and inspire the use of design patterns to improve code readability, writability, and communication.
The document discusses advanced Android threading concepts including:
1. The main thread is responsible for UI rendering and user interactions. Blocking it can cause app jank and ANRs.
2. Additional threads can be created using Thread or Runnable classes and started to offload work.
3. The Handler, Looper, and MessageQueue classes provide an asynchronous messaging system for communication between threads without blocking. A Looper dispatches messages that are sent via a Handler.
This document discusses best practices for designing mobile user experiences that transition between iOS and Android platforms. It emphasizes that iOS and Android have different design philosophies and patterns that must be understood. Specifically, it notes that iOS focuses on simplicity, clarity and depth while Android follows Material Design principles of bold graphics and intentional motion. Directly porting an iOS design to Android is discouraged as the two platforms have different navigation, buttons, notifications and other interface conventions. The document provides an overview of major Android design components and patterns to consider when adapting a mobile experience for both platforms.
Loaders are objects that abstract data retrieval and observation to simplify handling the activity lifecycle and data changes. CursorLoaders make it easy to access data from a content provider using a few simple steps. Loaders are initialized with a unique ID and callbacks handle the loading process, caching data between configuration changes. This prevents needing to reload data when a device rotates.
This lesson covers providing data correctly in Android applications using content providers and loaders. It discusses using SQLite databases to store structured data and querying the data using SQL statements like SELECT, UPDATE, INSERT, and DELETE. The document provides examples of creating a database table and performing CRUD operations on it. It also mentions challenges like avoiding SQL injection and handling database upgrades.
This document discusses the process of rendering views and pixels on the screen from a high level object to pixels. It covers the key steps of measure, layout, and draw and explains important concepts like double buffering, vsync, and avoiding overdraw. Key topics include how the GPU helps with rasterization, using viewtreeobserver for size changes, different root view types, and using constraint layout for a more optimized layout. It emphasizes best practices like minimizing unnecessary layout requests and using tools like hierarchy viewer and GPU profiling.
This document discusses building clean and flexible Android architecture using principles like separation of concerns, single responsibility, and dependency injection. It recommends patterns like MVVM and VIPER to separate an app's business logic from its UI framework. The key aspects are interfaces for Views, Presenters, Interactors and Repositories. Sample code shows how to implement these patterns using interfaces, dependency injection and testing. The goal is architecture that is easy to iterate on, collaborate with and test independently of Android frameworks and libraries.
This document discusses an Android development community and resources for learning Android. It includes information about upcoming community events like fundamentals and UI/UX sessions, as well as mentoring resources and programs to help developers progress from junior to senior levels. Sample code is provided for building a movie browsing app using best practices like MVP and libraries like Retrofit, Glide and Butterknife.
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
Preparing Non - Technical Founders for Engaging a Tech AgencyISH Technologies
Preparing non-technical founders before engaging a tech agency is crucial for the success of their projects. It starts with clearly defining their vision and goals, conducting thorough market research, and gaining a basic understanding of relevant technologies. Setting realistic expectations and preparing a detailed project brief are essential steps. Founders should select a tech agency with a proven track record and establish clear communication channels. Additionally, addressing legal and contractual considerations and planning for post-launch support are vital to ensure a smooth and successful collaboration. This preparation empowers non-technical founders to effectively communicate their needs and work seamlessly with their chosen tech agency.Visit our site to get more details about this. Contact us today www.ishtechnologies.com.au
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...XfilesPro
Wondering how X-Sign gained popularity in a quick time span? This eSign functionality of XfilesPro DocuPrime has many advancements to offer for Salesforce users. Explore them now!
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
Consistent toolbox talks are critical for maintaining workplace safety, as they provide regular opportunities to address specific hazards and reinforce safe practices.
These brief, focused sessions ensure that safety is a continual conversation rather than a one-time event, which helps keep safety protocols fresh in employees' minds. Studies have shown that shorter, more frequent training sessions are more effective for retention and behavior change compared to longer, infrequent sessions.
Engaging workers regularly, toolbox talks promote a culture of safety, empower employees to voice concerns, and ultimately reduce the likelihood of accidents and injuries on site.
The traditional method of conducting safety talks with paper documents and lengthy meetings is not only time-consuming but also less effective. Manual tracking of attendance and compliance is prone to errors and inconsistencies, leading to gaps in safety communication and potential non-compliance with OSHA regulations. Switching to a digital solution like Safelyio offers significant advantages.
Safelyio automates the delivery and documentation of safety talks, ensuring consistency and accessibility. The microlearning approach breaks down complex safety protocols into manageable, bite-sized pieces, making it easier for employees to absorb and retain information.
This method minimizes disruptions to work schedules, eliminates the hassle of paperwork, and ensures that all safety communications are tracked and recorded accurately. Ultimately, using a digital platform like Safelyio enhances engagement, compliance, and overall safety performance on site. https://safelyio.com/
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...kalichargn70th171
In today's business landscape, digital integration is ubiquitous, demanding swift innovation as a necessity rather than a luxury. In a fiercely competitive market with heightened customer expectations, the timely launch of flawless digital products is crucial for both acquisition and retention—any delay risks ceding market share to competitors.
5. What Do We Do?
● Android Fundamentals - NOW
● Android UI / UX - 29/1 !
● Community Hackathon - 9/3 !!!
● Android Performance
● Mentors Program
● Active community
22. Asking for contact
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(Phone.CONTENT_ITEM_TYPE);
startActivityForResult(intent, MY_REQUEST_CODE);
23. void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (data != null) {
Uri uri = data.getData();
if (uri != null) {
Cursor c = getContentResolver().query(uri,
new String[] {Contacts.DISPLAY_NAME,
Phone.NUMBER}, null,null, null)
}
}
}
Asking for contact
24. Need a UUID?
Option 1: TelephonyManager.getDeviceId
Requires READ_PHONE_STATE.
Option 2: Settings.Secure.ANDROID_ID
Reset at wipe
Follows the device, not the user.
34. Server Side
● Create a db file using SQLite and
fill it.
● Name your primary key columns
“_id”
● Create a table:
“android_metadata”
● Insert a single row containing the
locale (ex: "en_US")
Import ready
to use DB
35. Mobile Side
● Grab the zipped DB from assets
or network.
● Unzip it to your getDatabaseDir()
● Use as usual
Import ready
to use DB
SQLite version
36. Step 3: Look & Feel
“Where is the share button?”
52. Always up to date
Users don't like to wait.
• Location updated.
• Data downloaded from web.
53. Always up to date
Users don't like to wait.
• Location updated.
• Data downloaded from web.
54. Find the location fast.
• Loop through all providers->getLastKnownLoc.
• If there is one or more location which is recent enough – return the most
accurate one
• If not – Return the latest one.
• In case of #2 – look for “fastest” provider:
• Coarse Accuracy && low power consumption.
• Register for location update.
55. Use passive location
• >Gingerbread.
• Passive location – Receive location update when other app is using
location provider.
• Requires ACCESS_FINE_LOCATION permission.
• Location.getProvider().
57. // Create an instance of GoogleAPIClient.
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
Using fused location
58. @Override
public void onConnected(Bundle connectionHint) {
//get last known location
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient);
if (mLastLocation != null) {
//do something
}
//register for location updates
LocationRequest request = LocationRequest.create();
request.setInterval(minTime);
request.setPriority(lowPowerMoreImportantThanAccuracy ?
LocationRequest.PRIORITY.BALANCED_POWER_ACCURACY :
LocationRequest.PRIORITY_HIGH_ACCURACY );
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
request, this);
}
Using fused location
73. Work Semi-Offline
• Be resilient to poor networks.
• Prioritize your transactions.
• Be able to cancel transaction on the fly, or clear the Queue.
• Adjust your app’s behavior and timeouts accordingly.
• Use Volley (or any other cool transport layer)
76. Radio Resource
• Frequency is expensive.
• Cell tower can not service 100% of its clients 100% of the time.
• Frequency is dynamically allocated to clients.
• Cellular cells uses various multiplexing methods (OFDM/OFDMA,
FTDMA).
80. Avoid bursty traffic
• Transmit data “together”.
• Piggyback if needed.
• Pre-fetch data for the next 2-5 minutes.
• Don't ping just to keep TCP connection alive
• RRC != TCP Connection.
• TCP connection is kept even in IDLE mode
81. #1: Case study: Pandora
• Music file streamed as single file.
• Analytics data sends ~2KB every 62.5 seconds
Source: AT&T research
82. #1: Case study: Pandora
0.2% of data consumed 46% of energy!
83. Don't be HTTP rookie
• Don't download what you already have.
• Take care of server headers
• Max-age, expires.
• Use conditional GET when cache expires
• Use “last modified” header.
• Server return 304, with no body.
84. Don't be lazy
• Read AT&T research:
• Top Radio Resources Issues in Mobile Applications
• AT&T Lab Research – call for more efficient apps
• Watch my BABBQ talk - Building battery efficient apps
• (or ask yonathan to invite me once more ;-) )
• Use ARO.
• Developed by AT&T.
• Monitors and analyze network activity.
• http://developer.att.com/
• https://github.com/attdevsupport/ARO
85.
86. Adaptive App
• Optimized for different User Experience.
• User has more than one device.
• Be predictable.
• Behave as expected
87. Text Input
• Specify the Edit Text input to show the right keyboard type.
• use android:inputType attribute
• Four classes of keyboards:
• Plain text
• Decimal Number
• Phone Number
• Date or Time
88. Text Input
• Plain text types:
• URIs
• Email address
• People's names
• Postal address
• Passwords
89.
90.
91.
92.
93. mGeofenceList.add(new Geofence.Builder()
// Set the request ID of the geofence. This is a string to identify this
// geofence.
.setRequestId(entry.getKey())
.setCircularRegion(
entry.getValue().latitude,
entry.getValue().longitude,
Constants.GEOFENCE_RADIUS_IN_METERS
)
.setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
Geofence.GEOFENCE_TRANSITION_EXIT)
.build());
Geofencing
95. private PendingIntent getGeofencePendingIntent() {
// Reuse the PendingIntent if we already have it.
if (mGeofencePendingIntent != null) {
return mGeofencePendingIntent;
}
Intent intent = new Intent(this, GeofenceTransitionsIntentService.class);
// We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when
// calling addGeofences() and removeGeofences().
return PendingIntent.getService(this, 0, intent, PendingIntent.
FLAG_UPDATE_CURRENT);
}
Geofencing