Android-app-using-Kotlin/C3/URL-Request/English-timed
From Script | Spoken-Tutorial
| |
|
| 00:01 | Welcome to the Spoken Tutorial on URL Request. |
| 00:06 | In this tutorial we will learn to
Pass the Foss and Language ids to the URL of Spoken Tutorial |
| 00:15 | Parse the response JSON data |
| 00:18 | Run the Kotlin App and Display the fetched data |
| 00:23 | To record this tutorial, I am using
Ubuntu Linux 16.04 operating system |
| 00:30 | Android Studio version 3.x and |
| 00:34 | Android Phone with minimum of Android OS version 4.03 |
| 00:40 | To follow this tutorial, you should have basic knowledge of |
| 00:44 | Java programming language and Android Studio |
| 00:49 | If not, then go through the relevant tutorials on this website. |
| 00:54 | Spoken Tutorial project has a server which has an API made for a specific purpose. |
| 01:01 | It helps to fetch the video tutorials of a FOSS in a particular language. |
| 01:07 | Specific ids of a FOSS and language are passed to the server, to fetch the exact video. |
| 01:15 | API means Application Programming Interface |
| 01:19 | An API is the messenger that allows two software programs to communicate with each other |
| 01:27 | It delivers the request to the provider and then delivers the response back to us |
| 01:34 | Spoken Tutorial URL format is shown below: |
| 01:39 | In this URL, instead of variables fossID and languageID we have to pass the actual ids. |
| 01;48 | How to make a request to the URL? |
| 01:51 | Google provides Volley library which makes requesting a URL easy and faster. |
| 01:58 | Volley is an HTTP library that makes networking for Android Apps easier. |
| 02:05 | It is an external library. |
| 02:08 | We need to add to our Android studio project so that necessary files are downloaded. |
| 02:14 | Let us open Android Studio. |
| 02:18 | Open the project ST Search. |
| 02:22 | In the left panel, under Project, click on the small triangle to open Gradle Scripts. |
| 02:29 | Double-click on build dot gradle within brackets Module colon app |
| 02:36 | A new window opens. |
| 02:39 | In the dependencies block we will add a new dependency. |
| 02:43 | At the end of the block, add a new line as shown. |
| 02:48 | We have now added the Volley library to our project. |
| 02:53 | Next we will add the dependency of Picasso, as we will display images at a later stage. |
| 03:00 | So add a new line for the dependency as shown. |
| 03:04 | This is to display the thumbnail of the spoken tutorial videos. |
| 03:09 | A Sync Now message appears at the top right corner of the IDE.
Click on it. |
| 03:16 | Wait for the gradle build to complete which is shown at the bottom of the screen. |
| 03:22 | To request a URL, we need Internet connection. |
| 03:26 | So let us add code to get Internet permission for the app. |
| 03:31 | In the left panel, go to app manifests and double click on AndroidManifest dot xml |
| 03:40 | Add the below code above the application tag. |
| 03:44 | Without this line of code, our App cannot request any information from the Internet. |
| 03:51 | Now, go to SecondActivity dot kt |
| 03:57 | In onCreate method, we will add the code as shown to create a new request queue. |
| 04:04 | This will use the newRequestQueue method of volley library. |
| 04:09 | Next declare a variable url and assign the string as shown. |
| 04:14 | Here the URL is dynamic as we have to concatenate the FOSS and language ids received in intent. |
| 04:24 | So every time a different FOSS and language are selected, the URL will be different. |
| 04:31 | We will try to invoke the above URL in any web browser. |
| 04:36 | I’ll open Firefox web browser. |
| 04:40 | Type the following URL and press Enter. |
| 04:44 | Here, 10 specifies the FOSS id for Java and 22 specifies the language id for English. |
| 04:54 | We can see the json data that is displayed on the web page. |
| 04:59 | It is in readable format. For other browsers, it may look different. |
| 05:09 | Let us try for some other FOSS id and language id combination. |
| 05:12 | Change the FOSS id to 26 and language id to 22 and press Enter |
| 05:18 | This URL gives the videos of Python in English. |
| 05:23 | Now let’s change the id to 26 and 18. |
| 05:28 | This URL returns empty data which indicates that there are no videos for this combination of ids. |
| 05:37 | JSON stands for JavaScript Object Notation. |
| 05:42 | JSON is easy to read and write. |
| 05:46 | It is used to transmit data between a server and web application. |
| 05:51 | It is an alternative to XML. |
| 05:54 | Let us go back to SecondActivity dot kt |
| 05:58 | Now the next step is to make a string request. |
| 06:02 | Write the below code after val url line, in the oncreate method as shown. |
| 06:10 | If you see your code highlighted in red color, press Alt+Enter keys. |
| 06:17 | Select the appropriate option to quick fix the error. |
| 06:23 | In string request we specify four arguments: |
| 06:27 | Request dot Method, url, Response dot Listener and Response dot ErrorListener. |
| 06:36 | Response dot Listener specifies what to do when the response is received. |
| 06:42 | Response dot ErrorListener specifies what to do when there is an error. |
| 06:48 | extractJsonData is a method which we will create later, to parse the JSON data that we have received. |
| 06:55 | We have commented this line of code as of now. |
| 06:59 | Once we create the method, we will call it from the Response dot Listener |
| 07:04 | Write the code as shown after the StringRequest method. |
| 07:11 | This message “Contacting server…” indicates that still processing is going on. |
| 07:18 | Add the code in the next line as shown. |
| 07:23 | When the request is put in queue, the request is executed. |
| 07:28 | The Volley code which is required to request the URL to fetch data, is ready. |
| 07:33 | Run the app. |
| 07:38 | Search for a specific FOSS and language and press the Search button. |
| 07:43 | If you receive a toast message “Received server response!”, then your code is running fine. |
| 07:50 | As an assignment, do the following: |
| 07:53 | Disconnect the Internet/Wifi. |
| 07:57 | Now run the app and search for the FOSS and language. |
| 08:02 | Observe the error output. |
| 08:05 | We checked in the demonstration that we got the response from the server. Now we need to parse it. |
| 08:13 | Parsing means extracting useful information.
Let us go back to the browser, to see the JSON format data. |
| 08:21 | Change the FOSS id and Language Id to 26 and 22. |
| 08:27 | The data in JSON is key-value pairs. |
| 08:31 | We will use the tutorial underscore name, video underscore id and tutorial underscore level fields present in the JSON data. |
| 08:42 | Switch back to Android studio interface. |
| 08:46 | On the top left panel, under project, go to
app java com dot example dot spoken dot stsearch |
| 08:57 | Right-click on it. |
| 08:59 | Select New Kotlin File or Class |
| 09:05 | Type a name as VideoItem and press OK. |
| 09:10 | A new file VideoItem dot kt is created below SecondActivity. |
| 09:16 | Type this code in VideoItem dot kt. |
| 09:20 | Here we have created a class named as data class in Kotlin. |
| 09:25 | When data class is created, the getters and setters method are created while compiling. |
| 09:32 | So when we save the details of videos, we will make an object of this class for each video. |
| 09:40 | Here, video level specifies the basic, intermediate or advance level of spoken tutorials. |
| 09:48 | Now go to SecondActivity dot kt |
| 09:52 | Here we will create our method extractJsonData |
| 09:56 | So write the code after the onCreate method: |
| 10:02 | In the method we take the response received as arguments. |
| 10:07 | As we know how the JSON data will look, we can start parsing it. |
| 10:12 | First we obtain the array from response: |
| 10:16 | Write the code for it in extractJsonData method as shown. |
| 10:22 | Here we convert the response into JSONArray. |
| 10:26 | Now we know that inside this array there are many JSON objects of different videos. |
| 10:32 | So we declare a variable for storing objects one by one as shown here. |
| 10:40 | After that we need an object for VideoItem class in which we store the data.
Write the code as shown: |
| 10:49 | Next we require a ArrayList for VideoItem class. |
| 10:54 | Declare a global ArrayList as shown above the onCreate method and inside the class. |
| 11:01 | In this ArrayList all the video data will be saved. |
| 11:05 | So that it will be accessible to both onCreate and extractJsonData methods. |
| 11:12 | In this ArrayList we have declared the type as VideoItem. |
| 11:17 | That means it will have objects of VideoItem class as data. |
| 11:23 | Now we go to extractJsonData method. |
| 11:27 | Type the code as shown. |
| 11:34 | while loop is to iterate all the objects in JSON array: |
| 11:39 | In this loop we first obtain the json object in singleVideoJsonObject |
| 11:46 | This line extracts all the information and makes an object of VideoItem in singleVideoItem variable. |
| 11:54 | Here we make an object of VideoItem and pass all the values from the JSON object. |
| 12:01 | The loop will extract data of all videos received and store it in our arraylist. |
| 12:08 | So after the while block we will write the code to print the items of finalResultsArrayList: |
| 12:16 | forEach method loops through all the elements of the array list. |
| 12:21 | The it variable in the println() statement points to one item in every loop. |
| 12:28 | Now in Request dot Listener of stringRequest code we had the method which is commented. |
| 12:05 | Un-comment the code, so that extractJsonData will be called from there. |
| 12:41 | So this array list will contain many objects of our class type VideoItem. |
| 12:48 | When we take any one item from the array list, we get a object of VideoItem. |
| 12:53 | We can access the values for this object such as videoId, videoTitle, videoLevel. |
| 13:00 | So in this way JSON parsing is done. |
| 13:04 | Let us now run the App. |
| 13:08 | Search for a specific FOSS and language and press the Search button. |
| 13:15 | Click the Logcat section at the bottom of the IDE. |
| 13:20 | Here we can see the output of println statement. |
| 13:25 | To find our output, search for video in search box. |
| 13:30 | Here we can see all the VideoItems shown one after the other. |
| 13:39 | This brings us to the end of this tutorial. Let us summarize. |
| 13:44 | In this tutorial we learnt to
Pass the Foss and Language ids to the URL of Spoken Tutorial |
| 13:53 | Parse the response JSON data |
| 13:56 | Run the Kotlin App and Display the fetched data |
| 14:01 | The video at the following link summarises the Spoken Tutorial project.Please download and watch it. |
| 14:08 | The Spoken Tutorial Project Team conducts workshops and gives certificates on passing online tests.
For more details, please write to us. |
| 14:18 | Please post your timed queries in this forum. |
| 14:22 | Spoken Tutorial project is funded by NMEICT, MHRD, Government of India.
More information on this mission is available at this link. |
| 14:34 | The Android app and the script for this tutorial was contributed by Abhishek Shah. |
| 14:40 | And this is Nirmala Venkat along with the Spoken Tutorial team from IIT Bombay, signing off.
Thanks for watching. |