title
Android Development for Beginners 2

description
Get pictures of the App Inventor Blocks here : http://goo.gl/uh300T Best Android Book : http://goo.gl/uPhXFI In this part of my Android development tutorial for beginners I will focus on the App Inventor Blocks Editor. I did my best to cover as much as possible in this one video. I also have pictures of the blocks in the link above to help everyone easily copy from them. I cover Location Sensor, global variables, changing label text, working with strings, Sound, Buttons, Event Handling, Text to Speech, Vibration, Accelerometers, Orientation changes, Dialog boxes, executing activities, and so much more.

detail
{'title': 'Android Development for Beginners 2', 'heatmap': [{'end': 334.981, 'start': 298.575, 'weight': 0.975}, {'end': 1198.134, 'start': 1123.469, 'weight': 0.943}, {'end': 1373.557, 'start': 1300.377, 'weight': 0.705}], 'summary': "Tutorial series 'android development for beginners 2' covers app development, including gps initialization, provider lock, dialog box creation, accessing gps settings, and utilizing features like vibration, sound effects, text-to-speech, and accelerometer for enhancing a mobile zombie game app.", 'chapters': [{'end': 275.776, 'segs': [{'end': 55.105, 'src': 'embed', 'start': 0.282, 'weight': 1, 'content': [{'end': 6.345, 'text': 'Well hello internet and welcome to part two of my Android development tutorial for beginners with a focus on App Inventor.', 'start': 0.282, 'duration': 6.063}, {'end': 15.729, 'text': "And in this part of the tutorial I'm going to introduce you to App Inventor blocks and we are going to completely finish the app that we just started in part one of this tutorial.", 'start': 6.565, 'duration': 9.164}, {'end': 21.811, 'text': "And so, if you haven't seen part one of this tutorial, I provide a link in the upper right hand corner, as well as in the description for this video,", 'start': 15.949, 'duration': 5.862}, {'end': 23.532, 'text': 'and you absolutely have to watch it.', 'start': 21.811, 'duration': 1.721}, {'end': 25.333, 'text': 'otherwise none of this is going to make sense.', 'start': 23.532, 'duration': 1.801}, {'end': 27.414, 'text': "So I have a lot to do so let's jump into it.", 'start': 25.633, 'duration': 1.781}, {'end': 32.905, 'text': 'Okay, so in the last part of the tutorial we created this whole entire interface we have right here.', 'start': 28.078, 'duration': 4.827}, {'end': 36.469, 'text': 'And one thing that I left out is the icon.', 'start': 33.565, 'duration': 2.904}, {'end': 40.675, 'text': 'This is going to be the icon that represents your application on your Android device.', 'start': 36.549, 'duration': 4.126}, {'end': 44.28, 'text': 'And just to show you what it looks like, here it is.', 'start': 41.276, 'duration': 3.004}, {'end': 45.241, 'text': "Well actually it's not there.", 'start': 44.3, 'duration': 0.941}, {'end': 48.102, 'text': 'Here is actually the zombie picture that I drew.', 'start': 45.461, 'duration': 2.641}, {'end': 52.664, 'text': "And inside of here, this is just what I'm going to use for my zombie icon.", 'start': 48.122, 'duration': 4.542}, {'end': 55.105, 'text': "And it's 96 pixels by 96 pixels.", 'start': 52.784, 'duration': 2.321}], 'summary': 'Part two covers app inventor blocks and finishing the app with a 96x96 zombie icon.', 'duration': 54.823, 'max_score': 0.282, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg282.jpg'}, {'end': 128.441, 'src': 'embed', 'start': 100.16, 'weight': 3, 'content': [{'end': 103.561, 'text': "so you're going to open it like any other app and then you're going to see this warning message.", 'start': 100.16, 'duration': 3.401}, {'end': 105.442, 'text': "it's going to say can't access gps.", 'start': 103.561, 'duration': 1.881}, {'end': 106.503, 'text': 'please enable gps.', 'start': 105.442, 'duration': 1.061}, {'end': 115.07, 'text': 'Well, because we set everything up so that it will go and automatically go to the right part of the settings and allow the user to enable GPS.', 'start': 106.883, 'duration': 8.187}, {'end': 115.851, 'text': "they'll hit OK.", 'start': 115.07, 'duration': 0.781}, {'end': 119.754, 'text': "And then they'll get sent to exactly the right place, which is right here.", 'start': 116.071, 'duration': 3.683}, {'end': 121.755, 'text': "And they'll have to put a check mark right there.", 'start': 120.134, 'duration': 1.621}, {'end': 125.699, 'text': "And then they'll be able to use our application by hitting the Back button first.", 'start': 122.016, 'duration': 3.683}, {'end': 128.441, 'text': "And then they're back inside of our application, and it's working.", 'start': 125.999, 'duration': 2.442}], 'summary': 'App guides user to enable gps for usage, ensuring seamless functionality.', 'duration': 28.281, 'max_score': 100.16, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg100160.jpg'}, {'end': 245.236, 'src': 'embed', 'start': 218.811, 'weight': 0, 'content': [{'end': 222.952, 'text': "We're also going to have to make the phone speak out location data when it's touched.", 'start': 218.811, 'duration': 4.141}, {'end': 228.82, 'text': "and we're also gonna have to be able to detect shaking as well as detect screen orientation changes.", 'start': 223.092, 'duration': 5.728}, {'end': 235.649, 'text': "Now you don't have to memorize all this, I'm gonna be bouncing back and forth from this to what is called App Inventor Blocks.", 'start': 229.26, 'duration': 6.389}, {'end': 238.873, 'text': "So let's take a look at exactly what App Inventor Blocks are.", 'start': 235.989, 'duration': 2.884}, {'end': 245.236, 'text': 'Okay, so this is the part of App Inventor you are used to, and this is what is called the designer.', 'start': 239.213, 'duration': 6.023}], 'summary': 'Developing a phone app to speak out location data, detect shaking, and screen orientation changes using app inventor blocks.', 'duration': 26.425, 'max_score': 218.811, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg218811.jpg'}], 'start': 0.282, 'title': 'Android app development', 'summary': 'Covers app inventor blocks, app interface creation, adding an icon, application testing, enabling gps, displaying latitude and longitude, speaking location data, and detecting shaking and screen orientation changes.', 'chapters': [{'end': 32.905, 'start': 0.282, 'title': 'Android development tutorial part 2', 'summary': "Introduces app inventor blocks and completes the app started in part one of the tutorial, urging viewers to watch part one for context. the tutorial covers creating the app's interface.", 'duration': 32.623, 'highlights': ["The tutorial covers creating the app's interface.", 'The chapter introduces App Inventor blocks and completes the app started in part one of the tutorial.', 'A link to part one of the tutorial is provided for viewers to gain context.', 'The tutorial urges viewers to watch part one for context.']}, {'end': 275.776, 'start': 33.565, 'title': 'Adding icon and testing application', 'summary': 'Details the process of adding an icon for the application, testing the application, and outlining the features to be built, including enabling gps, displaying latitude and longitude, speaking location data, and detecting shaking and screen orientation changes.', 'duration': 242.211, 'highlights': ['The process of adding an icon for the application is demonstrated, with the icon being 96 pixels by 96 pixels. The icon for the application is shown to be 96 pixels by 96 pixels, and the process of importing it is explained.', 'The chapter explains the testing of the application, including the behavior when GPS is not enabled and the steps to enable it. The testing of the application is detailed, including the warning message displayed when GPS is not enabled and the steps for enabling GPS.', 'The features to be built in the application are outlined, including enabling GPS, displaying latitude and longitude, speaking location data, and detecting shaking and screen orientation changes. The chapter outlines the features to be built, such as enabling GPS, displaying latitude and longitude, speaking location data, and detecting shaking and screen orientation changes.']}], 'duration': 275.494, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg282.jpg', 'highlights': ['The chapter outlines the features to be built, such as enabling GPS, displaying latitude and longitude, speaking location data, and detecting shaking and screen orientation changes.', 'The tutorial urges viewers to watch part one for context.', 'The process of adding an icon for the application is demonstrated, with the icon being 96 pixels by 96 pixels.', 'The testing of the application is detailed, including the warning message displayed when GPS is not enabled and the steps for enabling GPS.', "The tutorial covers creating the app's interface.", 'The chapter introduces App Inventor blocks and completes the app started in part one of the tutorial.']}, {'end': 769.879, 'segs': [{'end': 303.978, 'src': 'embed', 'start': 276.036, 'weight': 0, 'content': [{'end': 281.561, 'text': "Now, like I said before, we're going to have to store our zombie latitude and longitude in a special place.", 'start': 276.036, 'duration': 5.525}, {'end': 284.264, 'text': 'That special place is going to be a global variable.', 'start': 281.821, 'duration': 2.443}, {'end': 287.987, 'text': "To access or create a global variable, we're going to come over here to variables.", 'start': 284.404, 'duration': 3.583}, {'end': 290.189, 'text': "And don't try to memorize all these things.", 'start': 288.347, 'duration': 1.842}, {'end': 292.271, 'text': "I'm going to be using them over and over and over again.", 'start': 290.509, 'duration': 1.762}, {'end': 293.612, 'text': "And eventually, you'll just get used to it.", 'start': 292.351, 'duration': 1.261}, {'end': 298.355, 'text': 'So here you see, initialize global variable, and it has a name inside of there.', 'start': 293.792, 'duration': 4.563}, {'end': 303.978, 'text': "Now what's one of the things we need to store? Well, we need to store our zombie latitude.", 'start': 298.575, 'duration': 5.403}], 'summary': 'Storing zombie latitude and longitude in a global variable to access and create them easily.', 'duration': 27.942, 'max_score': 276.036, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg276036.jpg'}, {'end': 334.981, 'src': 'heatmap', 'start': 298.575, 'weight': 0.975, 'content': [{'end': 303.978, 'text': "Now what's one of the things we need to store? Well, we need to store our zombie latitude.", 'start': 298.575, 'duration': 5.403}, {'end': 307.499, 'text': "And to start off, we're going to give it a dummy value.", 'start': 304.538, 'duration': 2.961}, {'end': 312.002, 'text': 'Now to create a dummy value, just click anywhere, not on a component, anywhere else.', 'start': 307.7, 'duration': 4.302}, {'end': 316.165, 'text': 'and hit the double quotes like that and then hit enter.', 'start': 312.402, 'duration': 3.763}, {'end': 320.349, 'text': "That's going to create this little piece here which is going to be pretty much a nothing value.", 'start': 316.366, 'duration': 3.983}, {'end': 324.793, 'text': "I don't know if you heard that click or not but it clicked into place and now those things are created.", 'start': 320.369, 'duration': 4.424}, {'end': 331.518, 'text': "Then we have to create another global variable or a box that we're going to store the longitude in.", 'start': 324.973, 'duration': 6.545}, {'end': 334.981, 'text': 'So just drag that little guy out there and type in.', 'start': 331.718, 'duration': 3.263}], 'summary': 'Creating dummy values for zombie latitude and longitude variables.', 'duration': 36.406, 'max_score': 298.575, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg298575.jpg'}, {'end': 426.258, 'src': 'embed', 'start': 399.823, 'weight': 1, 'content': [{'end': 406.448, 'text': 'Those initial steps are going to be to get the location sensor to start working so that it can get GPS data.', 'start': 399.823, 'duration': 6.625}, {'end': 412.493, 'text': "Another thing we're going to have to do is if we can't get that data, we're going to have to pop up a dialog box.", 'start': 406.708, 'duration': 5.785}, {'end': 414.274, 'text': "And so let's go and do that.", 'start': 413.113, 'duration': 1.161}, {'end': 422.437, 'text': "Alright. so if we are going to be initializing and whenever we're initializing something, we're referring to the screen or the app itself, and here it is.", 'start': 414.434, 'duration': 8.003}, {'end': 426.258, 'text': "So we're going to click on screen, and we're going to want to initialize things.", 'start': 422.757, 'duration': 3.501}], 'summary': 'Initiate location sensor for gps data and display dialog if data unavailable.', 'duration': 26.435, 'max_score': 399.823, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg399823.jpg'}, {'end': 582.619, 'src': 'embed', 'start': 550.506, 'weight': 3, 'content': [{'end': 553.747, 'text': 'And that is going to make our location sensor enabled.', 'start': 550.506, 'duration': 3.241}, {'end': 557.548, 'text': 'Now what we need to do is choose the provider of our data.', 'start': 553.907, 'duration': 3.641}, {'end': 560.669, 'text': 'And what we want to choose is GPS.', 'start': 557.728, 'duration': 2.941}, {'end': 569.932, 'text': "So what we're going to have to do is say if GPS is an option to provide us with our latitude and longitude data that we want to get,", 'start': 561.009, 'duration': 8.923}, {'end': 571.172, 'text': 'then we want to use it.', 'start': 569.932, 'duration': 1.24}, {'end': 576.794, 'text': "However it won't be available to us if they have GPS non-enabled.", 'start': 571.312, 'duration': 5.482}, {'end': 582.619, 'text': "In that situation, we're going to have to open up a dialog box and ask them to fix that problem.", 'start': 577.074, 'duration': 5.545}], 'summary': 'Enable gps for location sensor data retrieval.', 'duration': 32.113, 'max_score': 550.506, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg550506.jpg'}], 'start': 276.036, 'title': 'Storing zombie coordinates and gps initialization', 'summary': 'Explains the process of storing zombie coordinates using global variables and initializing gps in an app, including enabling the location sensor, setting it to true, and choosing the gps provider, to ensure functionality.', 'chapters': [{'end': 356.983, 'start': 276.036, 'title': 'Storing zombie coordinates using global variables', 'summary': 'Explains how to store zombie latitude and longitude in global variables, using dummy values and naming conventions, to track their locations in the app.', 'duration': 80.947, 'highlights': ['The process involves creating global variables for storing zombie latitude and longitude, utilizing naming conventions to differentiate between the two.', 'Explains the creation of dummy values for the latitude and longitude variables, emphasizing the importance of adhering to naming conventions and formatting when creating global variables.', "Provides instructions on creating global variables using the 'initialize global variable' function and demonstrates the process of setting dummy values for the latitude and longitude variables."]}, {'end': 769.879, 'start': 357.489, 'title': 'Gps initialization in app development', 'summary': "Explains the process of initializing the gps in an app, including enabling the location sensor, setting it to true, and choosing the gps provider to ensure the program's functionality.", 'duration': 412.39, 'highlights': ["Enabling the location sensor is crucial for initializing the GPS in the app. Enabling the location sensor is the initial step required to obtain GPS data for the app's functionality.", 'Setting the location sensor to true is essential for enabling GPS functionality. Setting the location sensor to true is necessary to ensure that the GPS data can be obtained for the app.', "Choosing the GPS provider is crucial to ensure the app can access latitude and longitude data. Selecting the GPS provider is essential for obtaining the necessary latitude and longitude data for the app's functionality."]}], 'duration': 493.843, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg276036.jpg', 'highlights': ['The process involves creating global variables for storing zombie latitude and longitude, utilizing naming conventions to differentiate between the two.', "Enabling the location sensor is crucial for initializing the GPS in the app. Enabling the location sensor is the initial step required to obtain GPS data for the app's functionality.", 'Explains the creation of dummy values for the latitude and longitude variables, emphasizing the importance of adhering to naming conventions and formatting when creating global variables.', 'Setting the location sensor to true is essential for enabling GPS functionality. Setting the location sensor to true is necessary to ensure that the GPS data can be obtained for the app.', "Provides instructions on creating global variables using the 'initialize global variable' function and demonstrates the process of setting dummy values for the latitude and longitude variables.", "Choosing the GPS provider is crucial to ensure the app can access latitude and longitude data. Selecting the GPS provider is essential for obtaining the necessary latitude and longitude data for the app's functionality."]}, {'end': 1121.608, 'segs': [{'end': 792.165, 'src': 'embed', 'start': 769.879, 'weight': 1, 'content': [{'end': 778.121, 'text': "so we want to lock our provider now on gps, and this is something you're just going to learn over time, and how we're going to do that is,", 'start': 769.879, 'duration': 8.242}, {'end': 787.023, 'text': "cycle through here until we have provider locked and let's drop that and drop that right there, and then we need to set something to true.", 'start': 778.121, 'duration': 8.902}, {'end': 790.664, 'text': "so let's just grab this guy right here or We can just remember.", 'start': 787.023, 'duration': 3.641}, {'end': 792.165, 'text': 'hey, true and false is logic.', 'start': 790.664, 'duration': 1.501}], 'summary': 'Implementing gps provider lock and logic for true and false', 'duration': 22.286, 'max_score': 769.879, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg769879.jpg'}, {'end': 847.983, 'src': 'embed', 'start': 808.39, 'weight': 0, 'content': [{'end': 813.572, 'text': "And we also know the only reason why the GPS wouldn't work is if they don't have that set up on their phone.", 'start': 808.39, 'duration': 5.182}, {'end': 815.033, 'text': 'So we need an else.', 'start': 813.812, 'duration': 1.221}, {'end': 818.614, 'text': "If this was true, we're going to do the then part.", 'start': 815.613, 'duration': 3.001}, {'end': 822.118, 'text': "If this isn't true, we want to do something else.", 'start': 818.974, 'duration': 3.144}, {'end': 824.481, 'text': "So we're going to click inside of here.", 'start': 822.619, 'duration': 1.862}, {'end': 827.445, 'text': 'And you can see right here that we can use else if or else.', 'start': 824.721, 'duration': 2.724}, {'end': 828.806, 'text': "Well, we don't need this right now.", 'start': 827.605, 'duration': 1.201}, {'end': 829.928, 'text': "So let's just use else.", 'start': 828.886, 'duration': 1.042}, {'end': 831.51, 'text': "And we're going to drag and drop that there.", 'start': 830.028, 'duration': 1.482}, {'end': 833.152, 'text': 'And then the else appears down there.', 'start': 831.71, 'duration': 1.442}, {'end': 834.874, 'text': "A little bit weird, but you'll get used to it.", 'start': 833.172, 'duration': 1.702}, {'end': 841.879, 'text': 'now, in this situation, we need to open up a dialog box, just like you saw before, and we need to say hey, go, get your GPS to work.', 'start': 835.074, 'duration': 6.805}, {'end': 847.983, 'text': 'so whenever we want to do that, we want to use what is called a notifier to pop up the dialog box.', 'start': 841.879, 'duration': 6.104}], 'summary': "Using 'else' to prompt gps setup with notifier.", 'duration': 39.593, 'max_score': 808.39, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg808390.jpg'}, {'end': 903.856, 'src': 'embed', 'start': 871.179, 'weight': 3, 'content': [{'end': 873.58, 'text': 'Title, which is going to be at the top of the dialog box.', 'start': 871.179, 'duration': 2.401}, {'end': 879.503, 'text': "Then we're going to have two buttons, and the first one is going to be OK and the second one is going to be Cancel.", 'start': 873.78, 'duration': 5.723}, {'end': 880.944, 'text': "and yes, it's going to be cancelable.", 'start': 879.503, 'duration': 1.441}, {'end': 888.568, 'text': 'so our message could be something like double quotes remember, please enable GPS and enter,', 'start': 881.204, 'duration': 7.364}, {'end': 891.61, 'text': "and there we have that and put that in there and there it's ready to go.", 'start': 888.568, 'duration': 3.042}, {'end': 892.83, 'text': 'now for a title.', 'start': 891.61, 'duration': 1.22}, {'end': 893.791, 'text': 'we could do something.', 'start': 892.83, 'duration': 0.961}, {'end': 896.292, 'text': 'and yes, you could also click on these and hit duplicate,', 'start': 893.791, 'duration': 2.501}, {'end': 903.856, 'text': "drop that in there and come in here and change this to something like can't access GPS and there it is.", 'start': 896.292, 'duration': 7.564}], 'summary': 'Dialog box with ok and cancel buttons for enabling gps and entering data.', 'duration': 32.677, 'max_score': 871.179, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg871179.jpg'}, {'end': 991.191, 'src': 'embed', 'start': 962.317, 'weight': 2, 'content': [{'end': 967.262, 'text': 'The event being clicking on the OK button, saying, yeah, I want you to be able to use my GPS.', 'start': 962.317, 'duration': 4.945}, {'end': 972.908, 'text': "Well, to handle the event from a notifier, we're going to go back to the notifiers.", 'start': 967.642, 'duration': 5.266}, {'end': 974.75, 'text': "And we're going to look at what we got here.", 'start': 973.248, 'duration': 1.502}, {'end': 977.114, 'text': 'And one of them is after choosing.', 'start': 975.031, 'duration': 2.083}, {'end': 984.404, 'text': "After they've made their choice in the dialog box, what do we want to do? I'm going to grab this and drag it out of here, drop it in here.", 'start': 977.534, 'duration': 6.87}, {'end': 991.191, 'text': 'Now, what exactly do we want to do once they have made a choice? Well, we want to see if the choice was OK.', 'start': 984.424, 'duration': 6.767}], 'summary': 'Handling the ok button event in notifiers after user choice in dialog box.', 'duration': 28.874, 'max_score': 962.317, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg962317.jpg'}], 'start': 769.879, 'title': 'Implementing gps provider lock and dialog box', 'summary': 'Explains implementing gps provider lock, including handling true and false conditions, alternative providers, and using notifiers, and creating a dialog box with ok and cancel buttons, ensuring it is cancelable, and handling the event after the user clicks ok.', 'chapters': [{'end': 870.898, 'start': 769.879, 'title': 'Implementing gps provider lock', 'summary': 'Explains how to implement gps provider lock in an app, including setting up logic for true and false conditions, handling alternative providers, and using notifiers to display a dialog box prompting users to enable gps.', 'duration': 101.019, 'highlights': ["The process involves setting up logic for true and false conditions, and utilizing 'else' to handle situations where GPS is not available.", 'Explaining the use of notifiers to display a dialog box prompting users to enable GPS.', 'Demonstrating the steps to cycle through and lock the provider for GPS in the app.']}, {'end': 1121.608, 'start': 871.179, 'title': 'Dialog box and gps settings', 'summary': 'Discusses creating a dialog box with ok and cancel buttons, ensuring it is cancelable, and handling the event after the user clicks ok to send them to make changes to their gps settings.', 'duration': 250.429, 'highlights': ['Creating a dialog box with OK and Cancel buttons The chapter focuses on creating a dialog box with OK and Cancel buttons to prompt the user to enable GPS.', 'Handling the event after the user clicks OK to send them to make changes to their GPS settings The chapter explains the process of handling the event after the user clicks OK on the dialog box to send them to make changes to their GPS settings.', 'Ensuring the dialog box is cancelable The chapter emphasizes the importance of ensuring that the dialog box is cancelable, providing flexibility to the user.']}], 'duration': 351.729, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg769879.jpg', 'highlights': ['Explaining the use of notifiers to display a dialog box prompting users to enable GPS.', 'Demonstrating the steps to cycle through and lock the provider for GPS in the app.', 'Handling the event after the user clicks OK to send them to make changes to their GPS settings.', 'Ensuring the dialog box is cancelable, providing flexibility to the user.', "The process involves setting up logic for true and false conditions, and utilizing 'else' to handle situations where GPS is not available.", 'Creating a dialog box with OK and Cancel buttons to prompt the user to enable GPS.']}, {'end': 1492.044, 'segs': [{'end': 1198.134, 'src': 'heatmap', 'start': 1121.768, 'weight': 3, 'content': [{'end': 1123.209, 'text': 'So what exactly do I want them to do?', 'start': 1121.768, 'duration': 1.441}, {'end': 1130.515, 'text': 'I want to send them to the settings part in their Android device that is going to allow them to turn the GPS on.', 'start': 1123.469, 'duration': 7.046}, {'end': 1134.518, 'text': "Well I'm actually going to actually have to show you something here.", 'start': 1130.655, 'duration': 3.863}, {'end': 1136.839, 'text': "We're going to go into this guy right here.", 'start': 1134.538, 'duration': 2.301}, {'end': 1142.684, 'text': 'This is a place where I can cycle through all of the potential settings options available on a device.', 'start': 1137.039, 'duration': 5.645}, {'end': 1146.466, 'text': 'By no means try to really focus in on this or memorize any of this.', 'start': 1142.964, 'duration': 3.502}, {'end': 1155.213, 'text': "This is again something you're just going to either remember by looking at the pictures on my website or through practice time and time again.", 'start': 1146.647, 'duration': 8.566}, {'end': 1161.76, 'text': "So what I want to do is I want to send them to the part that's going to allow them to turn on location services so I can use their GPS.", 'start': 1155.393, 'duration': 6.367}, {'end': 1166.865, 'text': "So inside of here, I'm going to do a search for location up here.", 'start': 1162.04, 'duration': 4.825}, {'end': 1167.566, 'text': 'There we go.', 'start': 1167.045, 'duration': 0.521}, {'end': 1171.25, 'text': "And I'm going to cycle through all of the potential options.", 'start': 1167.906, 'duration': 3.344}, {'end': 1176.715, 'text': 'Well, here if we look, we see show settings allow configuration of current location sources.', 'start': 1171.59, 'duration': 5.125}, {'end': 1178.156, 'text': "That's the guy that we want.", 'start': 1177.015, 'duration': 1.141}, {'end': 1180.077, 'text': "Again, don't try to memorize this.", 'start': 1178.316, 'duration': 1.761}, {'end': 1186.343, 'text': 'But this is the part of settings that is going to allow us to go in and turn on GPS for our app.', 'start': 1180.278, 'duration': 6.065}, {'end': 1189.766, 'text': "So I'm going to copy that guy, jump back over into App Inventor.", 'start': 1186.403, 'duration': 3.363}, {'end': 1198.134, 'text': "And anytime that I want to open up another activity or another application, I'm going to use something inside of here called Activity Starter.", 'start': 1190.086, 'duration': 8.048}], 'summary': 'Guide users to enable gps in android settings for app usage.', 'duration': 39.992, 'max_score': 1121.768, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1121768.jpg'}, {'end': 1254.823, 'src': 'embed', 'start': 1231.389, 'weight': 0, 'content': [{'end': 1238.233, 'text': 'Then after you define what activity you want to have executed, you have to tell it to start that activity.', 'start': 1231.389, 'duration': 6.844}, {'end': 1240.835, 'text': 'So again, go into Activity Starter, click on it.', 'start': 1238.433, 'duration': 2.402}, {'end': 1244.797, 'text': "Then we're going to go to the top right here where it says Call Start Activity.", 'start': 1240.955, 'duration': 3.842}, {'end': 1246.718, 'text': 'Come down here and drop that in.', 'start': 1245.117, 'duration': 1.601}, {'end': 1252.842, 'text': 'So here we defined what activity we want to have open, which is going to be the settings part of our Android device.', 'start': 1246.938, 'duration': 5.904}, {'end': 1254.823, 'text': 'And here we just said start it.', 'start': 1253.122, 'duration': 1.701}], 'summary': 'Using activity starter to open android device settings.', 'duration': 23.434, 'max_score': 1231.389, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1231389.jpg'}, {'end': 1378.101, 'src': 'heatmap', 'start': 1295.634, 'weight': 1, 'content': [{'end': 1300.377, 'text': "now we need to get the current latitude and longitude, so let's go do that now.", 'start': 1295.634, 'duration': 4.743}, {'end': 1304.76, 'text': "to get the location data, we're gonna have to go into the location sensor,", 'start': 1300.377, 'duration': 4.383}, {'end': 1312.446, 'text': "click on that and whenever you want to set up a new way of getting latitude and longitude, we're gonna have to go to location changed,", 'start': 1304.76, 'duration': 7.686}, {'end': 1315.088, 'text': 'and here you can see latitude and longitude as well.', 'start': 1312.446, 'duration': 2.642}, {'end': 1318.33, 'text': "as altitude is an option, we're gonna grab that and drag it out here.", 'start': 1315.088, 'duration': 3.242}, {'end': 1319.29, 'text': 'Now, with this guy,', 'start': 1318.55, 'duration': 0.74}, {'end': 1329.515, 'text': "what we're going to do is we are going to set these global variables or boxes up here with the right information and to get the location data for these guys.", 'start': 1319.29, 'duration': 10.225}, {'end': 1336.778, 'text': 'we can just put our little mouse over top of this and get set global zombie latitude, drag it over here, drop it right there and then,', 'start': 1329.515, 'duration': 7.263}, {'end': 1342.18, 'text': 'since we want the latitude, we put our mouse over this and we say, hey, get me the latitude and drop that right there.', 'start': 1336.778, 'duration': 5.402}, {'end': 1344.121, 'text': "We're also going to have to get the longitude.", 'start': 1342.42, 'duration': 1.701}, {'end': 1346.082, 'text': 'We can just duplicate this.', 'start': 1344.581, 'duration': 1.501}, {'end': 1351.845, 'text': 'drop it right there, come in here, change this to longitude and then change this to longitude as well.', 'start': 1346.082, 'duration': 5.763}, {'end': 1353.386, 'text': 'And on there, and there it is.', 'start': 1352.045, 'duration': 1.341}, {'end': 1358.448, 'text': "Just like that, we're able to grab that information from the GPS and set it inside of there.", 'start': 1353.746, 'duration': 4.702}, {'end': 1364.971, 'text': 'Now remember, we also wanted to change the label to display the latitude and longitude information.', 'start': 1358.688, 'duration': 6.283}, {'end': 1365.872, 'text': 'No problem.', 'start': 1365.212, 'duration': 0.66}, {'end': 1370.395, 'text': 'Now if we want to change the label, we just come over here and click on this guy.', 'start': 1366.092, 'duration': 4.303}, {'end': 1373.557, 'text': 'And then we want to change the text for our label.', 'start': 1370.655, 'duration': 2.902}, {'end': 1378.101, 'text': 'So we want to find set the label text to, oops, there we are.', 'start': 1373.718, 'duration': 4.383}], 'summary': 'Setting up location data to retrieve latitude and longitude and display it on a label.', 'duration': 82.467, 'max_score': 1295.634, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1295634.jpg'}, {'end': 1379.562, 'src': 'embed', 'start': 1353.746, 'weight': 2, 'content': [{'end': 1358.448, 'text': "Just like that, we're able to grab that information from the GPS and set it inside of there.", 'start': 1353.746, 'duration': 4.702}, {'end': 1364.971, 'text': 'Now remember, we also wanted to change the label to display the latitude and longitude information.', 'start': 1358.688, 'duration': 6.283}, {'end': 1365.872, 'text': 'No problem.', 'start': 1365.212, 'duration': 0.66}, {'end': 1370.395, 'text': 'Now if we want to change the label, we just come over here and click on this guy.', 'start': 1366.092, 'duration': 4.303}, {'end': 1373.557, 'text': 'And then we want to change the text for our label.', 'start': 1370.655, 'duration': 2.902}, {'end': 1378.101, 'text': 'So we want to find set the label text to, oops, there we are.', 'start': 1373.718, 'duration': 4.383}, {'end': 1378.501, 'text': 'Got it.', 'start': 1378.181, 'duration': 0.32}, {'end': 1379.562, 'text': 'Drop it right there.', 'start': 1378.741, 'duration': 0.821}], 'summary': 'Set gps information and label text easily in the app.', 'duration': 25.816, 'max_score': 1353.746, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1353746.jpg'}], 'start': 1121.768, 'title': 'Accessing and utilizing gps settings in android', 'summary': 'Covers navigating to android device settings to turn on gps and working with location settings and gps in an android app. it includes using activity starter to launch settings, setting up the location sensor to acquire latitude and longitude, and displaying the location information on the screen.', 'chapters': [{'end': 1161.76, 'start': 1121.768, 'title': 'Android device gps settings', 'summary': 'Demonstrates how to navigate to the settings part of an android device to turn on gps, emphasizing the need for practice to remember the process.', 'duration': 39.992, 'highlights': ['Users need to be directed to the settings part of their Android device to enable GPS for location services.', 'Emphasizing the importance of practice and repetition for remembering the process rather than focusing on memorization.', 'The chapter provides guidance on navigating through potential settings options available on a device.']}, {'end': 1492.044, 'start': 1162.04, 'title': 'Android app development: working with location settings and gps', 'summary': 'Details the process of accessing and utilizing location settings and gps in an android app, including the use of activity starter to launch settings, setting up the location sensor to acquire latitude and longitude, and displaying the location information on the screen.', 'duration': 330.004, 'highlights': ['The process of using Activity Starter to launch the settings part of an Android device Describing the process of using Activity Starter to launch the settings part of an Android device, enabling the activation of GPS for the app.', 'Setting up the location sensor to acquire latitude and longitude Detailing the steps for setting up the location sensor to acquire latitude and longitude data, including setting global variables and retrieving the location information from the GPS.', "Displaying the location information on the screen using labels and text manipulation Explaining the method of displaying latitude and longitude information on the screen using labels and text manipulation, including the use of text tools and creating a list of text using 'join'."]}], 'duration': 370.276, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1121768.jpg', 'highlights': ['The process of using Activity Starter to launch the settings part of an Android device Describing the process of using Activity Starter to launch the settings part of an Android device, enabling the activation of GPS for the app.', 'Setting up the location sensor to acquire latitude and longitude Detailing the steps for setting up the location sensor to acquire latitude and longitude data, including setting global variables and retrieving the location information from the GPS.', "Displaying the location information on the screen using labels and text manipulation Explaining the method of displaying latitude and longitude information on the screen using labels and text manipulation, including the use of text tools and creating a list of text using 'join'.", 'Users need to be directed to the settings part of their Android device to enable GPS for location services.', 'Emphasizing the importance of practice and repetition for remembering the process rather than focusing on memorization.', 'The chapter provides guidance on navigating through potential settings options available on a device.']}, {'end': 1697.668, 'segs': [{'end': 1537.137, 'src': 'embed', 'start': 1492.504, 'weight': 2, 'content': [{'end': 1495.485, 'text': 'and change this to longitude, which is right there.', 'start': 1492.504, 'duration': 2.981}, {'end': 1497.866, 'text': 'And that is going to automatically right there.', 'start': 1495.705, 'duration': 2.161}, {'end': 1505.208, 'text': 'that little block of blocks is going to update our little label inside of our application to show latitude and longitude.', 'start': 1497.866, 'duration': 7.342}, {'end': 1509.709, 'text': 'All right, so we have the GPS enabled, and we got the current latitude and longitude.', 'start': 1505.508, 'duration': 4.201}, {'end': 1514.551, 'text': 'Now what we want to do is get our phone to vibrate whenever the zombie is touched.', 'start': 1509.889, 'duration': 4.662}, {'end': 1516.931, 'text': 'So the zombie is actually a button.', 'start': 1514.871, 'duration': 2.06}, {'end': 1521.073, 'text': "So come over here, click on button, and let's look at all the options we have.", 'start': 1517.172, 'duration': 3.901}, {'end': 1522.033, 'text': 'One of them is click.', 'start': 1521.293, 'duration': 0.74}, {'end': 1525.914, 'text': 'So, grab that, drag it out here, drop it right there.', 'start': 1522.273, 'duration': 3.641}, {'end': 1531.236, 'text': 'And what do we want to do? Well, one of the things we want to do is have it vibrate.', 'start': 1526.274, 'duration': 4.962}, {'end': 1534.216, 'text': 'So, come over here, go to Sound 1.', 'start': 1531.556, 'duration': 2.66}, {'end': 1534.777, 'text': 'There it is.', 'start': 1534.216, 'duration': 0.561}, {'end': 1537.137, 'text': 'And we can choose that we want it to vibrate.', 'start': 1535.137, 'duration': 2}], 'summary': 'Enabling gps to display latitude and longitude; setting up phone to vibrate when zombie button is clicked.', 'duration': 44.633, 'max_score': 1492.504, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1492504.jpg'}, {'end': 1583.502, 'src': 'embed', 'start': 1556.824, 'weight': 1, 'content': [{'end': 1560.687, 'text': 'And you can also delete blocks by just right clicking on them and going delete block.', 'start': 1556.824, 'duration': 3.863}, {'end': 1561.327, 'text': 'There we go.', 'start': 1560.827, 'duration': 0.5}, {'end': 1563.989, 'text': 'And drop that in there and change this to 500.', 'start': 1561.667, 'duration': 2.322}, {'end': 1564.569, 'text': 'Half a second.', 'start': 1563.989, 'duration': 0.58}, {'end': 1571.454, 'text': 'Another thing we wanted to do is whenever the zombie is clicked on, we want to have it speak out actually this information up here.', 'start': 1564.689, 'duration': 6.765}, {'end': 1573.155, 'text': 'Latitude and longitude information.', 'start': 1571.554, 'duration': 1.601}, {'end': 1576.497, 'text': "Well, guess what? We're going to need the text to speech.", 'start': 1573.335, 'duration': 3.162}, {'end': 1577.398, 'text': 'Come over here.', 'start': 1576.817, 'duration': 0.581}, {'end': 1578.318, 'text': 'Text to speech.', 'start': 1577.638, 'duration': 0.68}, {'end': 1579.239, 'text': 'Click on that.', 'start': 1578.559, 'duration': 0.68}, {'end': 1580.74, 'text': 'And speak message.', 'start': 1579.679, 'duration': 1.061}, {'end': 1582.441, 'text': 'Sounds like exactly what I want it to do.', 'start': 1580.82, 'duration': 1.621}, {'end': 1583.502, 'text': 'Drop that in there.', 'start': 1582.641, 'duration': 0.861}], 'summary': 'Demonstrating block deletion, value change, and text-to-speech feature for zombie interaction.', 'duration': 26.678, 'max_score': 1556.824, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1556824.jpg'}, {'end': 1664.359, 'src': 'embed', 'start': 1638.919, 'weight': 0, 'content': [{'end': 1644.504, 'text': "Also said that we're going to have a sound play whenever our application is shaken.", 'start': 1638.919, 'duration': 5.585}, {'end': 1647.487, 'text': 'Well, that is going to be in the accelerometer.', 'start': 1644.524, 'duration': 2.963}, {'end': 1650.19, 'text': "That's going to detect that a shake has taken place.", 'start': 1647.627, 'duration': 2.563}, {'end': 1657.897, 'text': 'So we want to look through everything here and we see when the accelerometer detects that the device is being shaken, we want to do some things.', 'start': 1650.57, 'duration': 7.327}, {'end': 1662.398, 'text': 'So grab that, drag it out of there, drop it right here, and there that is.', 'start': 1658.197, 'duration': 4.201}, {'end': 1664.359, 'text': 'We want a sound to be played.', 'start': 1662.659, 'duration': 1.7}], 'summary': 'Accelerometer detects shake and triggers sound play.', 'duration': 25.44, 'max_score': 1638.919, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1638919.jpg'}], 'start': 1492.504, 'title': 'Mobile app development', 'summary': 'Covers enabling gps, setting up vibration and sound effects, and utilizing text-to-speech and accelerometer features to enhance a mobile zombie game app.', 'chapters': [{'end': 1697.668, 'start': 1492.504, 'title': 'Mobile app development: zombie game features', 'summary': 'Covers enabling gps, setting up vibration and sound effects, and utilizing text-to-speech and accelerometer features to enhance a mobile zombie game app.', 'duration': 205.164, 'highlights': ['Enabling GPS to display current latitude and longitude in the application.', 'Setting up vibration for half a second when the zombie button is clicked.', 'Utilizing text-to-speech to announce the latitude and longitude information when the zombie button is clicked.', 'Implementing sound effects to play upon shaking the device using accelerometer feature.']}], 'duration': 205.164, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1492504.jpg', 'highlights': ['Implementing sound effects to play upon shaking the device using accelerometer feature.', 'Utilizing text-to-speech to announce the latitude and longitude information when the zombie button is clicked.', 'Enabling GPS to display current latitude and longitude in the application.', 'Setting up vibration for half a second when the zombie button is clicked.']}, {'end': 2168.506, 'segs': [{'end': 1735.459, 'src': 'embed', 'start': 1697.668, 'weight': 0, 'content': [{'end': 1706.457, 'text': "it's going to vibrate and it's also going to convert our text to a spoken robot voice that says zombies, latitude is, and says latitude, zombies,", 'start': 1697.668, 'duration': 8.789}, {'end': 1708.299, 'text': 'longitude is and says the zombies latitude.', 'start': 1706.457, 'duration': 1.842}, {'end': 1714.405, 'text': "And then also, whenever it's shaken, it's going to play a sound, and after that, it's going to change the text on our label.", 'start': 1708.479, 'duration': 5.926}, {'end': 1718.211, 'text': 'And that brings us to the last thing, detect screen orientation changes.', 'start': 1714.565, 'duration': 3.646}, {'end': 1722.298, 'text': "Well, I'm actually going to do this in a little bit of a crazy way,", 'start': 1718.612, 'duration': 3.686}, {'end': 1725.724, 'text': 'just so that we can demonstrate a couple other different blocks that are available to us.', 'start': 1722.298, 'duration': 3.426}, {'end': 1728.934, 'text': 'Okay, so screen orientation changes.', 'start': 1726.152, 'duration': 2.782}, {'end': 1731.296, 'text': 'Well, guess what? That means we need to go to the screen.', 'start': 1728.994, 'duration': 2.302}, {'end': 1735.459, 'text': "And anytime we're thinking about the device itself changing, this is probably where you're going to go.", 'start': 1731.316, 'duration': 4.143}], 'summary': 'A device that converts text to speech and plays sound on shaking, demonstrating screen orientation changes.', 'duration': 37.791, 'max_score': 1697.668, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1697668.jpg'}, {'end': 1989.746, 'src': 'embed', 'start': 1968.468, 'weight': 4, 'content': [{'end': 1977.716, 'text': 'And now that we have everything set up properly, all we need to do to get it onto our device instead of using the normal Connect and AI Companion,', 'start': 1968.468, 'duration': 9.248}, {'end': 1978.737, 'text': 'which is the normal way.', 'start': 1977.716, 'duration': 1.021}, {'end': 1980.738, 'text': 'we can just click on Connect AI Companion.', 'start': 1978.737, 'duration': 2.001}, {'end': 1981.779, 'text': "Let's get out of that.", 'start': 1980.939, 'duration': 0.84}, {'end': 1984.301, 'text': 'Click on Connect AI Companion right there.', 'start': 1981.899, 'duration': 2.402}, {'end': 1985.562, 'text': 'Or we can use an emulator.', 'start': 1984.441, 'duration': 1.121}, {'end': 1988.125, 'text': "But since we're using GPS, AI Companion is going to work.", 'start': 1985.843, 'duration': 2.282}, {'end': 1989.746, 'text': "In this situation, we're going to click on that.", 'start': 1988.225, 'duration': 1.521}], 'summary': 'Setting up ai companion for device connection, preferring it over emulator due to gps usage.', 'duration': 21.278, 'max_score': 1968.468, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1968468.jpg'}, {'end': 2076.17, 'src': 'embed', 'start': 2049.308, 'weight': 2, 'content': [{'end': 2052.911, 'text': 'But you can do it whatever way you feel comfortable emailing an attachment.', 'start': 2049.308, 'duration': 3.603}, {'end': 2054.994, 'text': "And then I'm going to send it to my Gmail account.", 'start': 2053.072, 'duration': 1.922}, {'end': 2065.081, 'text': "But the very first thing we're going to need to do is make it so that our device is able to execute and install unknown applications, which is,", 'start': 2055.234, 'duration': 9.847}, {'end': 2066.303, 'text': 'in essence, what this is.', 'start': 2065.081, 'duration': 1.222}, {'end': 2067.724, 'text': "So let's take a look at how to do that.", 'start': 2066.362, 'duration': 1.362}, {'end': 2076.17, 'text': "Okay, so to be able to run an outside application on your device, what you're going to have to do is inside of Settings.", 'start': 2068.844, 'duration': 7.326}], 'summary': 'Guide to enabling unknown applications on device for running outside applications.', 'duration': 26.862, 'max_score': 2049.308, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg2049308.jpg'}, {'end': 2132.476, 'src': 'embed', 'start': 2086.21, 'weight': 3, 'content': [{'end': 2095.898, 'text': 'But what we need to look for specifically is unknown sources, right here where it says allow installation of apps from unknown sources.', 'start': 2086.21, 'duration': 9.688}, {'end': 2097.54, 'text': 'This must be checked.', 'start': 2096.299, 'duration': 1.241}, {'end': 2102.884, 'text': "And if you have that checked, then you'll be able to receive the applications and install them.", 'start': 2097.88, 'duration': 5.004}, {'end': 2111.758, 'text': 'Okay, so, now that you have that all set up and you have the capability to install customized applications,', 'start': 2103.564, 'duration': 8.194}, {'end': 2116.165, 'text': 'what we have to do now is go and check our email and install that application.', 'start': 2111.758, 'duration': 4.407}, {'end': 2117.747, 'text': "So let's take a look at how we're going to do that.", 'start': 2116.225, 'duration': 1.522}, {'end': 2124.092, 'text': 'Now that we have sent our application using just regular old email.', 'start': 2118.689, 'duration': 5.403}, {'end': 2127.854, 'text': 'remember, we have to use Gmail if we want to be able to open this up.', 'start': 2124.092, 'duration': 3.762}, {'end': 2132.476, 'text': "we can now go into Gmail and we're going to see the application right there.", 'start': 2127.854, 'duration': 4.622}], 'summary': 'Enable installation of unknown sources, then use gmail to install customized applications.', 'duration': 46.266, 'max_score': 2086.21, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg2086210.jpg'}], 'start': 1697.668, 'title': 'Android development', 'summary': 'Covers detecting screen orientation changes, creating a zombie voice app, and installing customized android applications, involving text-to-speech conversion, sound playing, button adjustment, ai companion usage, apk saving, email transfer, and enabling unknown app installation.', 'chapters': [{'end': 1968.168, 'start': 1697.668, 'title': 'Screen orientation changes and zombie voice app', 'summary': 'Details the process of detecting screen orientation changes and creating a zombie voice app, involving converting text to speech, playing sounds, and adjusting button sizes based on orientation.', 'duration': 270.5, 'highlights': ['Create a zombie voice app involving converting text to speech, playing sounds, and adjusting button sizes based on orientation. Involves converting text to speech, playing sounds, and adjusting button sizes based on orientation.', 'Demonstrate the process of detecting screen orientation changes using a unique approach to showcase different math functions and blocks available. Unique approach to showcase different math functions and blocks available for screen orientation changes.']}, {'end': 2168.506, 'start': 1968.468, 'title': 'Installing customized android applications', 'summary': 'Explains how to install customized android applications on an android device, including using ai companion, saving the apk to the computer, emailing it to a gmail account, and enabling installation of unknown applications in device settings.', 'duration': 200.038, 'highlights': ['The chapter explains how to install customized Android applications on an Android device The chapter provides a detailed guide on installing customized Android applications on an Android device, using various methods such as AI Companion, saving the APK to the computer, and emailing it to a Gmail account.', "Enabling installation of unknown applications in device settings The chapter emphasizes the importance of enabling the installation of unknown applications by checking the 'allow installation of apps from unknown sources' setting in device settings, enabling the device to receive and install customized applications.", 'Using AI Companion and emulator for installation The chapter mentions the option to use AI Companion or an emulator for installing customized applications, with AI Companion being recommended when using GPS in the application.', 'Emailing the application to a Gmail account for installation The chapter explains the process of emailing the customized application to a Gmail account and highlights the necessity of using Gmail for installation, as other email versions may not work for installation.']}], 'duration': 470.838, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/YffNwgGo_sg/pics/YffNwgGo_sg1697668.jpg', 'highlights': ['Demonstrate the process of detecting screen orientation changes using a unique approach to showcase different math functions and blocks available.', 'Create a zombie voice app involving converting text to speech, playing sounds, and adjusting button sizes based on orientation.', 'The chapter provides a detailed guide on installing customized Android applications on an Android device, using various methods such as AI Companion, saving the APK to the computer, and emailing it to a Gmail account.', "Enabling installation of unknown applications in device settings by checking the 'allow installation of apps from unknown sources' setting.", 'Using AI Companion or an emulator for installing customized applications, with AI Companion being recommended when using GPS in the application.', 'Emailing the application to a Gmail account for installation and the necessity of using Gmail for installation, as other email versions may not work for installation.']}], 'highlights': ["The tutorial covers creating the app's interface.", 'The process of adding an icon for the application is demonstrated, with the icon being 96 pixels by 96 pixels.', 'The chapter outlines the features to be built, such as enabling GPS, displaying latitude and longitude, speaking location data, and detecting shaking and screen orientation changes.', "Enabling the location sensor is crucial for initializing the GPS in the app. Enabling the location sensor is the initial step required to obtain GPS data for the app's functionality.", 'Explaining the use of notifiers to display a dialog box prompting users to enable GPS.', 'Demonstrating the steps to cycle through and lock the provider for GPS in the app.', 'Implementing sound effects to play upon shaking the device using accelerometer feature.', 'Utilizing text-to-speech to announce the latitude and longitude information when the zombie button is clicked.', 'Enabling GPS to display current latitude and longitude in the application.', 'Demonstrate the process of detecting screen orientation changes using a unique approach to showcase different math functions and blocks available.']}