In this session, I will give an overview of Android Wear and how to integrate it in your product strategy. We will look at the underlying design principles and discuss a number of use cases for apps that connect to wearable devices. After that, we will take a look at some code examples and learn how to use the Android Wear SDK.
Android Wear 2.0 is a major update and contains a number of significant updates that will make it easier to build delightful experiences for wearables. In this session, I will provide an overview of new features such as Standalone apps, Material Design on Android Wear and some of the new UI components we're making available (such as Navigation Drawers and Action Drawers), as well as complications and complication data providers.
See Androids Fighting: Connect Salesforce with Your Android Wear WatchSalesforce Developers
Bring the App Cloud to your Android Wear watch. The App Cloud provides a rich set of APIs and everything required to create stunning apps, even for your smart watch. Android Wear is a version of Google's Android operating system designed for smartwatches and other wearables. Leveraging the Salesforce Mobile SDK for Android, you just need a few lines of code to extend your business process to your smart watch. With speach recognition, you can even talk to Salesforce. Join us to learn about the architectural principles to connect Android Wear devices with Salesforce in a session that will be packed with tips about what works and what you should avoid.
Introduction to android wear development.
Basically all you need to know about this new form factor; vision, design principles, development options, code samples.
This is an introductory session to Android Wear. We will cover Design Principles and how to implement them. In particular, I will show how to enhance your existing notifications to make them shine on Android Wear, how to implement Android Wear apps that make use of the new possibilities Android Wear gives you as a developer such as voice input and GPS. Finally, we will take a look at implementing watch faces.
Android Wear 2.0 is a major update and contains a number of significant updates that will make it easier to build delightful experiences for wearables. In this session, I will provide an overview of new features such as Standalone apps, Material Design on Android Wear and some of the new UI components we're making available (such as Navigation Drawers and Action Drawers), as well as complications and complication data providers.
See Androids Fighting: Connect Salesforce with Your Android Wear WatchSalesforce Developers
Bring the App Cloud to your Android Wear watch. The App Cloud provides a rich set of APIs and everything required to create stunning apps, even for your smart watch. Android Wear is a version of Google's Android operating system designed for smartwatches and other wearables. Leveraging the Salesforce Mobile SDK for Android, you just need a few lines of code to extend your business process to your smart watch. With speach recognition, you can even talk to Salesforce. Join us to learn about the architectural principles to connect Android Wear devices with Salesforce in a session that will be packed with tips about what works and what you should avoid.
Introduction to android wear development.
Basically all you need to know about this new form factor; vision, design principles, development options, code samples.
This is an introductory session to Android Wear. We will cover Design Principles and how to implement them. In particular, I will show how to enhance your existing notifications to make them shine on Android Wear, how to implement Android Wear apps that make use of the new possibilities Android Wear gives you as a developer such as voice input and GPS. Finally, we will take a look at implementing watch faces.
Break Timer: Android-wear introduction and application case-studyUmair Vatao
Break Timer: An android-wear application that sits silently on your wrist and remind you to take a break if you keep typing for long duration (Facebook counts!). Help you avoid RSI problem.
Android Workshop for NTU. A getting started guide to android application development.
UPDATE (Oct 2013): An updated slide at http://samwize.com/2013/10/13/android-workshop-2013/
Developing AIR for Android with Flash Professional CS5Chris Griffith
New to mobile development? Wondering how mobile applications are built? This presentation will walk you the entire development process of the AIR for Android application from design to deployment. Chris Griffith will show you how he designed and built the application using a variety of tools and techniques.
My presentation on Android to the Ruby Users of Minnesota group. Introduces the platform, demo applications I wrote and how to list your app in the Android market.
Android TV: Building apps with Google’s Leanback LibraryJoe Birch
In this class, we'll look at how we can create Android TV apps with the help of Google's leanback library. After a brief introduction to the TV platform and an open-source Vine TV app, we'll move straight into how you can begin building applications for yourself using the leanback library, following best practices along the way. We'll take a look at the different components that are provided by the framework and how you can craft custom components of your own to enhance your application's UX. Seeing as Android TV applications are completely testable, we'll also take a brief look at how this can be done to ensure your app functions as expected!
Evaluating ways to generate revenue from the Adobe Integrated Runtime. Specifically, it examines the business potential of Adobe AIR from the perspective of an RIA developer. We will show lots of examples and examine best practices for design and GUI with Adobe Air 2.0.
The unconventional devices for the Android video streamingMatteo Bonifazi
Streaming video is not just through Android smartphone and tablet.
The 2014 was the year where Chromecast reached its brightness, getting into 4 millions living rooms. The 2015 instead is the year of the Android TV, the Google way “to smart” the TV.
This talk we’ll give you an overview about the streaming in Android. Starting from video streaming on mobile devices, we will guide you into the evolution of the development through Chromecast up to Android TV.
Matteo Bonifazi and Alessandro Martellucci will be illustrating this talk with their experiences developing mobile television applications for the main Italian broadcaster providers.
Break Timer: Android-wear introduction and application case-studyUmair Vatao
Break Timer: An android-wear application that sits silently on your wrist and remind you to take a break if you keep typing for long duration (Facebook counts!). Help you avoid RSI problem.
Android Workshop for NTU. A getting started guide to android application development.
UPDATE (Oct 2013): An updated slide at http://samwize.com/2013/10/13/android-workshop-2013/
Developing AIR for Android with Flash Professional CS5Chris Griffith
New to mobile development? Wondering how mobile applications are built? This presentation will walk you the entire development process of the AIR for Android application from design to deployment. Chris Griffith will show you how he designed and built the application using a variety of tools and techniques.
My presentation on Android to the Ruby Users of Minnesota group. Introduces the platform, demo applications I wrote and how to list your app in the Android market.
Android TV: Building apps with Google’s Leanback LibraryJoe Birch
In this class, we'll look at how we can create Android TV apps with the help of Google's leanback library. After a brief introduction to the TV platform and an open-source Vine TV app, we'll move straight into how you can begin building applications for yourself using the leanback library, following best practices along the way. We'll take a look at the different components that are provided by the framework and how you can craft custom components of your own to enhance your application's UX. Seeing as Android TV applications are completely testable, we'll also take a brief look at how this can be done to ensure your app functions as expected!
Evaluating ways to generate revenue from the Adobe Integrated Runtime. Specifically, it examines the business potential of Adobe AIR from the perspective of an RIA developer. We will show lots of examples and examine best practices for design and GUI with Adobe Air 2.0.
The unconventional devices for the Android video streamingMatteo Bonifazi
Streaming video is not just through Android smartphone and tablet.
The 2014 was the year where Chromecast reached its brightness, getting into 4 millions living rooms. The 2015 instead is the year of the Android TV, the Google way “to smart” the TV.
This talk we’ll give you an overview about the streaming in Android. Starting from video streaming on mobile devices, we will guide you into the evolution of the development through Chromecast up to Android TV.
Matteo Bonifazi and Alessandro Martellucci will be illustrating this talk with their experiences developing mobile television applications for the main Italian broadcaster providers.
Presentation/demo held at Google Developer Group Oslo DevFest 2014
Abstract:
This talk will show you how to build an Android Wear app. Thomas will start out with a plain notification and show you how to add features until you have a full-fledged card UI. We will discuss the role of the phone and the watch and how to communicate between them. As a case study he will use a prototype for a news alert app he's working on - there will be plenty of code examples and demos.
Thomas Oldervoll has worked 5 years for Google in Mountain View and 9 years for Zenior in Oslo. He likes building things, in particular machine learning, scalable backend systems and Android apps.
MOPCON 2014 - Best software architecture in app developmentanistar sung
Talking about how to build smart design and architecture for app development. Let your app can easy develop and deploy components on your app. And more topic of version control and quality improvement.
Design Patterns for Tablets and SmartphonesMichael Galpin
This is a talk I gave at AnDevCon. It talks about ways to take advantage of features introduced in Android 3.0 to create more modular and better looking apps.
SwiftUI makes it easy to create beautiful UIs in no time, but it is just as easy to end up with a giant view that mixes view code and business logic. Fortunately, Apple gave us some tools to keep the bloat in check and write maintainable and reusable code.
In this talk, I am going to show you how to
- refactor an existing SwiftUI view to make it more maintainable,
- turn it into a reusable SwiftUI component,
- add event handling,
- make the view configurable,
- use SwiftUI's styling API to apply different designs,
- add it to the Xcode component library,
- turn it into a shareable component that can be consumed via Swift Package Manager,
- and distribute it via GitHub
In this workshop, you will learn how to build a SwiftUI application with Firebase. We will cover the following topics:
- Data modeling for Firestore
- Efficiently mapping Firestore data using Swift’s Codable protocol
- Fetching data from Firestore using snapshot listeners
- Connecting SwiftUI’s state management system to Firestore to implement real-time sync
- Securing your user’s data using Firebase Security Rules
- Signing in your users using Firebase Authentication
We will be using the latest versions of Firebase and SwiftUI, making use of Combine and async/await to demonstrate how to call asynchronous APIs using modern Swift technologies. Please bring your laptop, making sure to install the latest stable version of Xcode before the workshop.
SwiftUI makes it easy to create beautiful UIs in no time, but it is just as easy to end up with a giant view that mixes view code and business logic. Fortunately, Apple gave us some tools to keep the bloat in check and write maintainable and reusable code.
In this talk, I am going to show you how to
- refactor an existing SwiftUI view to make it more maintainable,
- turn it into a reusable SwiftUI component,
- add event handling,
- make the view configurable,
- add it to the Xcode component library,
- turn it into a shareable component that can be consumed via Swift Package Manager,
- and distribute it via GitHub
Firebase for Apple Developers - SwiftHeroesPeter Friese
In this talk, we are going to walk you through the building blocks for creating modern applications on Apple’s platforms using SwiftUI and Firebase.
We will cover the following topics:
- Setting up an architecture for data-driven applications
- What’s new in SwiftUI’s application life cycle
- Syncing data in realtime across multiple devices with Cloud Firestore
- Mapping Firestore documents in a type-safe way using the Codable protocol
- Storing images and other large files in Cloud Storage
- Using Firebase in WidgetKit and on watchOS
- How async/await (new in Swift 5.5) will affect the way we write asynchronous code (plus some surprises in Firebase's code base)
Firebase is always evolving, so we will also talk about how we’re making use of Apple’s latest technologies in our own code base, for example
- Combine
- async/await
- SwiftUI view modifiers
No matter if you’re a seasoned Firebase user or just wondering what it is all about, you should leave this session with a deeper understanding of what Firebase it and how you can use it your apps on Apple’s platforms.
+ = ❤️ (Firebase for Apple Developers) at Swift LeedsPeter Friese
In this talk, I am going to walk you through the building blocks for creating modern applications on Apple’s platforms using SwiftUI and Firebase.
We will cover the following topics:
- Setting up an architecture for data-driven applications
- What’s new in SwiftUI’s application life cycle
- Syncing data in realtime across multiple devices with Cloud Firestore
- Mapping Firestore documents in a type-safe way using the Codable protocol
- Using Combine to fetch data from remote APIs and Firebase
- How async/await (new in Swift 5.5) will affect the way we write asynchronous code (plus some surprises in Firebase's code base)
Firebase is always evolving, so I will also talk about how we’re making use of Apple’s latest technologies in our own code base, for example
- Combine
- async/await
- SwiftUI view modifiers
No matter if you’re a seasoned Firebase user or just wondering what it is all about, you should leave this session with a deeper understanding of what Firebase it and how you can use it your apps on Apple’s platforms.
Async/await is a new language feature that will ship with Swift 5.5 this year. There’s no doubt it will have a significant impact on how we write asynchronous code.
In this talk, we’re going to look at some use cases for async/await, how we can call existing Swift APIs using this new feature, and why your decision to write your SDK in Objective-C might turn out to have been a very clever move.
We’ll also have a look at the refactoring support Apple is adding to Xcode and how it will help you migrate your existing code base.
In this talk, I am going to walk you through the building blocks for creating modern applications on Apple’s platforms using SwiftUI and Firebase.
We will cover the following topics:
- Setting up an architecture for data-driven applications
- What’s new in SwiftUI’s application life cycle
- Syncing data in realtime across multiple devices with Cloud Firestore
- Mapping Firestore documents in a type-safe way using the Codable protocol
- Using Combine to fetch data from remote APIs and Firebase
- How async/await (new in Swift 5.5) will affect the way we write asynchronous code (plus some surprises in Firebase's code base)
Firebase is always evolving, so I will also talk about how we’re making use of Apple’s latest technologies in our own code base, for example
- Combine
- async/await
- SwiftUI view modifiers
No matter if you’re a seasoned Firebase user or just wondering what it is all about, you should leave this session with a deeper understanding of what Firebase it and how you can use it your apps on Apple’s platforms.
Building Apps with SwiftUI and FirebasePeter Friese
In this talk, I'm going to show how to build data-driven SwiftUI applications that uses Cloud Firestore to store data.
You will learn how to architect your SwiftUI app so both its local and remote state stay in sync in real time
Rapid Application Development with SwiftUI and FirebasePeter Friese
Firebase is Google's mobile development platform for Android, iOS, and the web. SwiftUI is Apple's user interface toolkit that lets developers design apps in a declarative way. In this session, we will bring the two together and take a look at how easy it is to develop a new application from scratch.
Slides for my talk at CocoaHeads Berlin (https://www.meetup.com/Cocoaheads-Berlin/events/266764473/)
Rapid Application Development with SwiftUI and FirebasePeter Friese
Firebase is Google's mobile development platform for Android, iOS, and the web. SwiftUI is Apple's user interface toolkit that lets developers design apps in a declarative way. In this session, we will bring the two together and take a look at how easy it is to develop a new application from scratch.
Slides for my talk at heise MacDev 2019 (https://heise-macdev.de/lecture.php?id=8509)
6 Things You Didn't Know About Firebase AuthPeter Friese
There’s no doubt about it: many apps need some way of authenticating the user, but most developers don’t get overly excited by the prospect of implementing a login/sign-up screen.
In this talk, you will learn what Firebase Auth is, why you should use it, and - if this didn’t get you excited yet - 5 things you probably didn’t know about Firebase Auth before.
In particular, we’re going to look at
- How Firebase Auth works, and why you should use it
- How to let users sign in without even having to come up with a password
- What Anonymous Auth is all about and why you should care
- How to make signing in on iOS more magical
- How to integrate Firebase Auth and Sign in with Apple
Five Things You Didn't Know About Firebase AuthPeter Friese
There’s no doubt about it: many apps need some way of authenticating the user, but most developers don’t get overly excited by the prospect of implementing a login/sign-up screen.
In this talk, you will learn what Firebase Auth is, why you should use it, and - if this didn’t get you excited yet - 5 things you probably didn’t know about Firebase Auth before.
In particular, we’re going to look at
- How Firebase Auth works, and why you should use it
- How to let users sign in without even having to come up with a password
- What Anonymous Auth is all about and why you should care
- How to make signing in on iOS more magical
Building High-Quality Apps for Google AssistantPeter Friese
In this session, I will show you how to build great apps for the assistant using Dialogflow and Actions on Google. Building Actions with Dialogflow is deceptively easy, but building great apps that meet the quality bar requires in-depth knowledge of the design guidelines we defined. In this talk, I'm going to walk you through the best practices for VUI design and will show you how to apply these to your Assistant apps. We’ll cover topics such as handling new and returning users, robust error handling for no-input and no-match situations, and being able to repeat information for the user. We will also look at strategies for implementing multi-lingual apps and how to design for multiple surfaces at the same time.
Building Conversational Experiences with Actions on Google Peter Friese
Since we first started using computers, we have dreamt of interacting with them in a more natural, human-like way using spoken language. Advances in machine learning and artificial intelligence have spiked an interest in natural language processing, and building conversational interfaces no longer is a dream, but a reality every developer can use in their own applications.
The problem of recognising spoken input has been largely solved, and the next challenge is how to build compelling user experiences that are modelled after natural human conversation.
In this talk, I will give an introduction to the Google Assistant and how to use Actions on Google to build conversational interfaces for devices with and without screens. We will take a look at how API.AI makes implementing natural language understanding feasible even for non-linguists, and discuss how you can integrate agents with existing backends. In conversation, it's all about being natural, so we will also look at how to create agents that feel like real characters.
Building Conversational Experiences with Actions on GooglePeter Friese
Since we first started using computers, we have dreamt of interacting with them in a more natural, human-like way using spoken language. Advances in machine learning and artificial intelligence have spiked an interest in natural language processing, and building conversational interfaces no longer is a dream, but a reality every developer can use in their own applications.
The problem of recognising spoken input has been largely solved, and the next challenge is how to build compelling user experiences that are modelled after natural human conversation.
In this talk, I will give an introduction to the Google Assistant and how to use Actions on Google to build conversational interfaces for devices with and without screens. We will take a look at how API.AI makes implementing natural language understanding feasible even for non-linguists, and discuss how you can integrate agents with existing backends. In conversation, it's all about being natural, so we will also look at how to create agents that feel like real characters.
With recent advances in wearable technology, it's now possible to create novel fitness experiences without building custom hardware. In this talk we take you through creating a fitness tracker in C# on Android Wear, covering Google Play Services and watch-faces along the way. If this piques your interest, you can build your own Android Wear-based fitness tracker in our code lab!
Google Play Services are a unified SDK that allow you to quickly and easily integrate Google features into your Android apps. Being rolled out to millions of Android devices, they provide easy access to Google services and allow you to innovate quickly.
In this session, I will give you a rundown of the core services available via Google Play Services and give you an overview of the new APIs that ship as a part of Google Play Services. We will also have a look at some of the lesser known features that will enable you to build apps that truly rock.
Google+ for Mobile Apps on iOS and AndroidPeter Friese
Create a more engaging and personalized experience for your users by incorporating aspects of Google+ into your mobile app. Learn how your users can share pictures, links, and more into Google+ from your app, and how doing so can raise visibility and discoverability of your application.
Cross-Platform Authentication with Google+ Sign-InPeter Friese
This presentations outlines how Google+ Sign-In allows your users to sign in once and then be signed in seamlessly across all of your apps. The session takes a look at Google+ Sign-in authentication models and highlights common pitfalls and best practices.
17. BigPictureStyle
sendNotification()
Intent viewIntent = new Intent(context, DummyActivity.class);
PendingIntent viewPendingIntent = PendingIntent.getActivity(context, 0, viewIntent, 0);
Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setSmallIcon(R.drawable.plane)
.setContentTitle(String.format("Flight AW123 is ready to board", notificationId))
.setContentText("Please proceed to gate C 17 to board. Have a nice flight!")
.setStyle(
new NotificationCompat.BigPictureStyle()
.bigPicture(BitmapFactory.decodeResource(context.getResources(),
R.drawable.sanfrancisco))
.setBigContentTitle("Flight AW123 is ready to board.")
.setSummaryText("Please proceed to gate C 17 to board. Have a nice flight!"))
.setContentIntent(viewPendingIntent)
.build();
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(notificationId++, notification);
21. Adding Pages to Notifications
sendNotification()
Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setSmallIcon(R.drawable.plane)
.setContentTitle(String.format("Flight AW123 is ready to board", notificationId))
.setContentText("Please proceed to gate C 17 to board. Have a nice flight!")
.setContentIntent(viewPendingIntent)
.extend(new NotificationCompat.WearableExtender()
.addPages(pages))
.build();
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(notificationId++, notification);
24. Sending a Voice Input Notification
sendNotification()
Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setSmallIcon(R.drawable.plane)
.setContentTitle(String.format("Flight AW123 is ready to board", notificationId))
.setContentText("Please proceed to gate C 17 to board. Have a nice flight!")
.extend(new NotificationCompat.WearableExtender()
.addPages(pages)
.addAction(replyAction))
.build();
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(notificationId++, notification);
42. Transferring Assets
sendDataToWearable()
final ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteStream);
Asset asset = Asset.createFromBytes(byteStream.toByteArray());
PutDataMapRequest dataMap =
PutDataMapRequest.create(Constants.FLIGHT_PATH + "/" + Uri.encode("SFO"));
dataMap.getDataMap().putString(Constants.EXTRA_FLIGHTNUMBER, "AC123");
dataMap.getDataMap().putString(Constants.EXTRA_GATE, "C 17");
dataMap.getDataMap().putAsset(Constants.EXTRA_DESTINATION, imageAssetDestination);
PutDataRequest request = dataMap.asPutDataRequest();
// Send the data over
DataApi.DataItemResult result =
Wearable.DataApi.putDataItem(googleApiClient, request).await();
43. Sending Messages
sendDataToWearable()
// If successful store the data path
// Construct an array of all successfully sent data paths
DataMap itemPathMap = new DataMap();
itemPathMap.putString(Constants.EXTRA_UPDATED_FLIGHTS,
result.getDataItem().getUri().toString());
// Convert to bytes to be send with the message
byte[] dataMapBytes = itemPathMap.toByteArray();
44. Sending Messages
sendDataToWearable()
// If successful store the data path
// Construct an array of all successfully sent data paths
DataMap itemPathMap = new DataMap();
itemPathMap.putString(Constants.EXTRA_UPDATED_FLIGHTS,
result.getDataItem().getUri().toString());
// Convert to bytes to be send with the message
byte[] dataMapBytes = itemPathMap.toByteArray();
Iterator<String> itr = Utilities.getNodes(googleApiClient).iterator();
while (itr.hasNext()) {
// Notify all nodes to "start", providing the data paths of all
// transmitted tourist attractions. What "start" does will be up
// to the wearable.
!
}
45. Sending Messages
sendDataToWearable()
// If successful store the data path
// Construct an array of all successfully sent data paths
DataMap itemPathMap = new DataMap();
itemPathMap.putString(Constants.EXTRA_UPDATED_FLIGHTS,
result.getDataItem().getUri().toString());
// Convert to bytes to be send with the message
byte[] dataMapBytes = itemPathMap.toByteArray();
Iterator<String> itr = Utilities.getNodes(googleApiClient).iterator();
while (itr.hasNext()) {
// Notify all nodes to "start", providing the data paths of all
// transmitted tourist attractions. What "start" does will be up
// to the wearable.
Wearable.MessageApi.sendMessage(googleApiClient, itr.next(),
Constants.START_PATH, dataMapBytes);
}