Merge pull request #141 from iHub/bugfixes

Merging content fixes from @secretrobotron
This commit is contained in:
Brian Mwadime 2016-07-11 17:33:37 +03:00 коммит произвёл GitHub
Родитель f1015ee3ab b8a82bf02b
Коммит bf7770a1af
18 изменённых файлов: 348 добавлений и 756 удалений

Просмотреть файл

@ -1,173 +0,0 @@
package com.mozilla.hackathon.kiboko.adapters;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
import com.mozilla.hackathon.kiboko.R;
import com.mozilla.hackathon.kiboko.activities.TutorialSlideActivity;
import com.mozilla.hackathon.kiboko.models.TopicItem;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Brian Mwadime on 01/06/2016.
*/
public class TopicListAdapter extends BaseAdapter implements Filterable {
List<TopicItem> topics;
private Context context;
private Filter planetFilter;
private List<TopicItem> origTopicList;
public TopicListAdapter(Context ctx, List<TopicItem> topics) {
this.topics = topics;
this.context = ctx;
this.origTopicList = topics;
}
@Override
public int getCount() {
return topics.size();
}
@Override
public TopicItem getItem(int position) {
return topics.get(position);
}
@Override
public long getItemId(int position) {
return topics.get(position).hashCode();
}
/* *********************************
* We use the holder pattern
* It makes the view faster and avoid finding the component
* *********************************
**/
private static class Holder
{
TextView name;
TextView description;
Button learn_button;
Button quiz_button;
}
public void resetData() {
topics = origTopicList;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View viewItem = convertView;
Holder holder = new Holder();
// First let's verify the convertView is not null
if (convertView == null) {
// This a new view we inflate the new layout
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
viewItem = inflater.inflate(R.layout.topiclist_list_item, null);
// Now we can fill the layout with the right values
TextView name = (TextView) viewItem.findViewById(R.id.topiclist_name);
TextView description = (TextView) viewItem.findViewById(R.id.topiclist_summary);
Button learn_button = (Button) viewItem.findViewById(R.id.topiclist_more);
Button quiz_button = (Button) viewItem.findViewById(R.id.topiclist_quiz);
holder.name = name;
holder.description = description;
holder.learn_button = learn_button;
holder.quiz_button = quiz_button;
learn_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, TutorialSlideActivity.class);
context.startActivity(intent);
}
});
// quiz_button.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// Intent intent = new Intent(context, QuizActivity.class);
// context.startActivity(intent);
// }
// });
viewItem.setTag(holder);
}
else
holder = (Holder) viewItem.getTag();
final TopicItem topic = topics.get(position);
holder.name.setText(topic.getName());
holder.description.setText(topic.getDescription());
return viewItem;
}
/*
* We create our filter
*/
@Override
public Filter getFilter() {
if (planetFilter == null)
planetFilter = new TopicsFilter();
return planetFilter;
}
private class TopicsFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
// We implement here the filter logic
if (constraint == null || constraint.length() == 0) {
// No filter implemented we return all the list
results.values = origTopicList;
results.count = origTopicList.size();
}
else {
// We perform filtering operation
List<TopicItem> nPlanetList = new ArrayList<TopicItem>();
for (TopicItem topic : topics) {
if (topic.getName().toUpperCase().startsWith(constraint.toString().toUpperCase()))
nPlanetList.add(topic);
}
results.values = nPlanetList;
results.count = nPlanetList.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
// Now we have to inform the adapter about the new list filtered
if (results.count == 0)
notifyDataSetInvalidated();
else {
topics = (List<TopicItem>) results.values;
notifyDataSetChanged();
}
}
}
}

Просмотреть файл

@ -16,9 +16,6 @@ import com.mozilla.hackathon.kiboko.R;
import com.mozilla.hackathon.kiboko.activities.FindIconsActivity;
import com.mozilla.hackathon.kiboko.activities.TutorialSlideActivity;
import com.mozilla.hackathon.kiboko.models.Topic;
import com.mozilla.hackathon.kiboko.settings.SettingsUtils;
import org.sufficientlysecure.htmltextview.EmojiUtils;
import java.util.ArrayList;
import java.util.List;
@ -92,12 +89,7 @@ public class TopicsAdapter extends BaseAdapter implements Filterable {
holder = (Holder) viewItem.getTag();
final Topic topic = topics.get(position);
if(SettingsUtils.isFunModeEnabled(context)){
holder.tv.setText(EmojiUtils.parse(topic.getName()));
}else{
holder.tv.setText(topic.getName());
}
holder.tv.setText(topic.getName());
holder.img.setImageResource(topic.getImage());
viewItem.setOnClickListener(new View.OnClickListener() {

Просмотреть файл

@ -1,73 +0,0 @@
package com.mozilla.hackathon.kiboko.fragments;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.mozilla.hackathon.kiboko.R;
import com.mozilla.hackathon.kiboko.adapters.TopicListAdapter;
import com.mozilla.hackathon.kiboko.models.TopicItem;
import java.util.ArrayList;
import java.util.List;
public class TopicListFragment extends ListFragment {
// Listview Adapter
TopicListAdapter adapter;
String decription = "Description of Topic. Description of Topic. Description of Topic. Description of Topic";
// Search EditText
Button view_icons;
public TopicListFragment() {
}
public static TopicListFragment newInstance() {
TopicListFragment fragment = new TopicListFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_topiclist_layout, container, false);
return view;
}
private List<TopicItem> getTopics() {
List<TopicItem> list = new ArrayList<TopicItem>();
list.add(get(1, "Phone Topic 1",decription ));
list.add(get(2, "Phone Topic 2",decription));
list.add(get(3, "App Topic 3", decription));
list.add(get(4, "Account Topic 4", decription));
list.add(get(5, "Calendar Topic 5", decription));
list.add(get(6, "Alarm Topic 6", decription));
list.add(get(7, "Settings Topic 7", decription));
list.add(get(8, "Search Topic 8", decription));
return list;
}
private TopicItem get(int id, String s, String s2) {
return new TopicItem(id, s, s2);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapter = new TopicListAdapter(this.getActivity(), getTopics());
setListAdapter(adapter);
}
}

Просмотреть файл

@ -1,11 +0,0 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mozilla.hackathon.kiboko.activities.DetailsActivity">
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</RelativeLayout>

Просмотреть файл

@ -1,15 +1,16 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
tools:context=".activities.IconQuizActivity"
android:background="@color/colorPrimary">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:gravity="top"
android:layout_centerHorizontal="true">
<TextView
android:layout_gravity="center_horizontal"
@ -129,4 +130,4 @@
</com.mozilla.hackathon.kiboko.widgets.CheckableLinearLayout>
</com.mozilla.hackathon.kiboko.widgets.DSORadioGroup>
</LinearLayout>
</RelativeLayout>
</ScrollView>

Просмотреть файл

@ -1,13 +0,0 @@
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.MainActivity">
<!--<android.support.v4.view.PagerTabStrip-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="top"/>-->
</android.support.v4.view.ViewPager>

Просмотреть файл

@ -1,69 +0,0 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.QuizActivity"
android:background="@drawable/gray_border">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/activity_horizontal_margin"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:orientation="vertical" >
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/quizStepView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.04" >
<RadioButton
android:id="@+id/radio0"
android:background="#CCCCCC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton" />
<RadioButton
android:id="@+id/radio1"
android:background="#CCCCCC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RadioButton" />
<RadioButton
android:id="@+id/radio2"
android:background="#CCCCCC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RadioButton" />
</RadioGroup>
<Button
android:id="@+id/btnNext"
android:textColor="#FFFFFF"
android:background="#222222"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Next question" />
</LinearLayout>
</RelativeLayout>

Просмотреть файл

@ -43,7 +43,7 @@
android:layout_margin="@dimen/activity_horizontal_margin"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/connectwifi9"
android:src="@drawable/bmo"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:background="@android:color/transparent"

Просмотреть файл

@ -4,24 +4,24 @@
android:layout_width="match_parent"
android:clickable="true"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_vertical_margin"
android:id="@+id/dashboard_item_view"
android:layout_marginBottom="1dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3">
<ImageView
android:layout_margin="5dp"
android:layout_gravity="center|center_vertical"
android:id="@+id/dashboard_icon"
android:src="@drawable/circular_wifi"
android:layout_height="60dp"
android:layout_width="60dp" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_vertical_margin"
android:id="@+id/dashboard_item_view"
android:layout_marginBottom="1dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3">
<ImageView
android:layout_margin="5dp"
android:layout_gravity="center|center_vertical"
android:id="@+id/dashboard_icon"
android:src="@drawable/circular_wifi"
android:layout_height="60dp"
android:layout_width="60dp" />
</LinearLayout>
<TextView
android:id="@+id/dashboard_text"

Просмотреть файл

@ -1,21 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.mozilla.hackathon.kiboko.fragments.IconsFragment">
<ScrollView
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
tools:context="com.mozilla.hackathon.kiboko.fragments.IconsFragment"
android:fillViewport="true"
android:background="@color/colorPrimary"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -28,8 +22,8 @@
android:id="@+id/icons_gridview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:numColumns="4"
android:layout_below="@+id/icons_button"
android:columnWidth="50dp">
</GridView>
@ -52,6 +46,4 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
</LinearLayout>
</ScrollView>

Просмотреть файл

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.mozilla.hackathon.kiboko.fragments.TopicListFragment">
<ListView
android:verticalSpacing="2dp"
android:id="@android:id/list"
android:dividerHeight="3dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TextView>
</LinearLayout>

Просмотреть файл

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_margin="5dp"
android:layout_alignParentLeft="true"
android:id="@+id/left_icon"
android:src="@drawable/circle"
android:layout_width="40dp"
android:layout_height="40dp"
/>
<TextView
android:layout_alignTop="@+id/left_icon"
android:textSize="18sp"
android:textColor="@color/colorTextPrimary"
android:layout_marginBottom="4dp"
android:layout_toRightOf="@+id/left_icon"
android:id="@+id/action_title"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
<TextView
android:layout_marginBottom="20dp"
android:textSize="16sp"
android:layout_below="@+id/action_title"
android:textColor="@color/colorTextPrimary"
android:id="@+id/action_desc"
android:text="Get settings for your phone to access the internet"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignLeft="@+id/action_title"/>
</RelativeLayout>

Просмотреть файл

@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/tooltip_button_margin"
android:background="@drawable/popup_border"
android:orientation="vertical">
@ -25,14 +26,16 @@
android:textAppearance="@android:style/TextAppearance.Small"
tools:ignore="RtlHardcoded" />
<!--<Button-->
<!--android:id="@+id/btn_confirm"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="end"-->
<!--android:paddingRight="10dp"-->
<!--android:paddingLeft="10dp"-->
<!--android:background="#999999"-->
<!--android:textColor="#FFFFFF"-->
<!--android:text="@string/btn_more" />-->
<Button
android:id="@+id/btn_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="@dimen/tooltip_button_margin"
android:paddingRight="10dp"
android:visibility="gone"
android:paddingLeft="10dp"
android:background="@color/colorPrimary"
android:textColor="@color/colorTextPrimary"
android:text="@string/btn_more" />
</LinearLayout>

Просмотреть файл

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:clickable="false"
android:paddingBottom="@dimen/activity_vertical_margin"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/topiclist_name"
android:text="Usage Topic 1"
android:textStyle="bold"
android:textSize="28dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/topiclist_summary"
android:text="Description of this topic. Description of this topic."
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:layout_height="wrap_content">
<Button
android:id="@+id/topiclist_more"
android:layout_marginRight="5dp"
android:text="Tutorial"
android:textColor="#FFFFFF"
android:background="@color/colorTextDisabled"
android:layout_weight="0.5"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/topiclist_quiz"
android:textColor="#FFFFFF"
android:layout_marginLeft="5dp"
android:background="@color/colorTextDisabled"
android:layout_weight="0.3"
android:text="Quiz"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<View
android:layout_width="0dp"
android:layout_weight="0.2"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>

Просмотреть файл

@ -1,258 +1,293 @@
{
"tutorials": [{
"id": "1",
"tag": "wifi",
"header": "Wi-Fi ni Noma!",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "What is Wi-Fi?",
"gifUrl": "wifi1",
"description": "Wi-Fi is a technology that helps your phone connect to the internet, similar to airtime or mobile data. However, <b>Wi-Fi doesn't use your airtime or mobile data.</b> Wi-Fi can often be free in coffee shops, or accessible at a small fee."
}, {
"id": "2",
"title": "Where do I get it? Who owns it?",
"gifUrl": "wifi2",
"description": "Wi-Fi networks are created by \"hotspots\" that connect to the internet. Anyone can buy one and set it up at home, at work, or in a public space. If you can detect a Wi-Fi network on your phone, you might be able to connect to it. To learn more about connecting, check out <a href=\"mozilladso:///tutorials/connect_wifi\">Connecting to Wi-Fi</a>."
}, {
"id": "3",
"title": "Saving Money",
"gifUrl": "wifi3",
"description": "Connecting to a Wi-Fi hotspot saves money because it lets you use the internet without using mobile data or airtime on your phone. Remember, though, sometimes you have to pay a small fee to use Wi-Fi at a business or cafe, or buy some goods.<br><br>Many phones are capable of creating hotspots <img src=\"ic_wifi_tethering_white_24dp\"/>. <b>If you let other people connect to your phone's hotspot, it may consume your data.</b>"
}, {
"id": "4",
"title": "Speed and Stability",
"gifUrl": "wifi4",
"description": "Wi-Fi networks are generally more stable and faster than mobile data networks. Downloading files or watching videos is best over Wi-Fi.\n<b>Be aware:</b> it is not <b>always</b> the case that Wi-Fi is faster and more stable than mobile data. Depending on infrastructure, popularity, and other environmental factors, Wi-Fi may not be as responsive or reliable."
}]
"tutorials": [{
"id": "1",
"tag": "wifi",
"header": "Wi-Fi ni Noma!",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "What is Wi-Fi?",
"gifUrl": "wifi1",
"description": "Wi-Fi is a technology that helps your phone connect to the internet, similar to airtime or mobile data. However, <b>Wi-Fi doesn't use your airtime or mobile data.</b> Instead, in coffee shops or public spaces, Wi-Fi is often free."
}, {
"id": "2",
"tag": "connect_wifi",
"header": "Connecting to Wi-Fi",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Finding Names and Passwords",
"gifUrl": "connectwifi1",
"description": "To connect to a Wi-Fi hotspot, you will need <b color=\"#E4BC4D\">the name of the hotspot</b> and, in some cases, <b color=\"#E4BC4D\">its password</b>. If you are in a business, cafe, or other public space, you can usually ask the owner of the hotspot for this information. Some places charge a small fee for using their Wi-Fi."
}, {
"id": "2",
"title": "Turning on Wi-Fi",
"gifUrl": "connectwifi2",
"description": "On most Android phones, you can swipe down the Notification Bar at the top of the screen and tap the Wi-Fi <a href=\"mozilladso:///actions/connect_wifi\"><img src=\"ic_network_wifi_white_24dp\"/></a> icon. If you are close to a Wi-Fi network you have joined before, <b>your phone will try to connect to it automatically</b>. You can also manage your Wi-Fi connection by clicking on the Settings <img src=\"ic_settings_applications_white_24dp\"/> and checking out the Wi-Fi section."
}, {
"id": "3",
"title": "Finding your hotspot in the Wi-Fi list",
"gifUrl": "connectwifi4",
"description": "Look at the list of networks that appear and click on the one that you want to connect to."
}, {
"id": "4",
"title": "Entering a Password",
"gifUrl": "connectwifi6",
"description": "<i>If your phone has already connected to the correct Wi-Fi hotspot, you can skip this step.</i><br><br>Some Wi-Fi hotspots require a password. In this case, a box will appear that asks for a password. If you dont know the password, ask for help from the owner of the hotspot. Once you have the password, use the keyboard that pops up to enter it."
}, {
"id": "5",
"title": "Fixing Problems",
"gifUrl": "connectwifi7",
"description": "If you have problems connecting to a Wi-Fi hotspot, here is a list of things you can try:<ul><li>Make sure you have the right hotspot name.</li><li>Make sure you have the right password.</li><li>If you have the right password, make sure it's entered correctly.</li><li>Talk to the hotspot owner (shopkeeper, librarian, IT assistant, etc.) and explain your problems. They may be able to help solve your problem.</li><li>In the Wi-Fi menu, delete the hotspot by holding its name until a menu appears. Then, choose <b>\"Forget Network\"</b>, and connect again.</li></ul>"
}, {
"id": "6",
"title": "Enjoy :-)",
"gifUrl": "connectwifi9",
"description": "Now, you should be connected! Enjoy! :-)"
}]
"id": "2",
"title": "Where do I get it? Who owns it?",
"gifUrl": "wifi2",
"description": "Wi-Fi networks are created by \"hotspots\" that connect to the internet. Anyone can buy one and set it up at home, at work, or in a public space. If you can detect a Wi-Fi network on your phone, you might be able to connect to it. To learn more about connecting, check out <a href=\"mozilladso:///tutorials/connect_wifi\">Connecting to Wi-Fi</a>."
}, {
"id": "3",
"title": "Saving Money",
"gifUrl": "wifi3",
"description": "Connecting to a Wi-Fi hotspot saves money because it lets you use the internet without using mobile data or airtime on your phone. Remember, though, sometimes you have to pay a small fee to use Wi-Fi at a business or cafe, or buy some goods.<br><br>Many phones are capable of creating hotspots <img src=\"ic_wifi_tethering_white_24dp\"/>. <b>If you let other people connect to your phone's hotspot, it may consume your data.</b>"
}, {
"id": "3",
"tag": "data",
"header": "Mobile Data Consumption",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Mobile Data vs. Wi-Fi",
"gifUrl": "data1",
"description": "To access the internet, your phone uses a <b>mobile data</b> connection or a <b>Wi-Fi</b> connection.<br><ul><li>Mobile data is sold by your service provider and is measured in kilobytes, megabytes and gigabytes.</li><li>Wi-Fi hotspots rely on service providers for their internet, too. So, <b>connecting to a Wi-Fi hotspot, will use its data instead of yours.</b></li></ul>"
}, {
"id": "2",
"title": "Apps Use Data",
"gifUrl": "data2",
"description": "<b>Data is used to move content around the internet.</b> Many apps (Google, Yahoo, Facebook, WhatsApp, Opera, Instagram, Branch) will consume data because they connect to the internet. Applications like Opera Mini use less data than others because they restrict images and video. Others, like YouTube, use much more data because they use video content."
}, {
"id": "3",
"title": "Restrict Background Data",
"gifUrl": "data4",
"description": "The easiest way to save data is to tell your apps (or the Android system itself) to <b>restrict background data</b>. Some apps continue to use data (in the \"background\") when you're not specifically using them: syncing email, updating feeds, checking the weather, etc."
}, {
"id": "4",
"title": "Disable Auto-update",
"gifUrl": "auto_update",
"description": "A lot of data is also consumed by your phone automatically updating your apps. If your apps were downloaded through Google Play (most are) it may be using \"auto-update\" and could be chewing its way through your data without you even knowing."
}, {
"id": "5",
"title": "Check your Apps' Settings",
"gifUrl": "data5",
"description": "Some applications are designed to do work even when you're not specifically using them. Most of them use <b>data by default</b> usually to provide you with regular notifications or updates.\n<br>Check the settings or preferences in your apps to verify that they aren't using data all the time. In some cases, you can have the choice to \"sync\" (connect to the internet) over Wi-Fi only.<br><br><b>In Chrome</b>, you can turn on \"Data Saver\" in the settings to save up to 35% of your data usage.<br><br><b>In Opera</b>, you can use \"compression\" that will let you enjoy the internet and save data."
}, {
"id": "6",
"title": "Check your WhatsApp Settings",
"gifUrl": "data6",
"description": "You can also restrict the data consumption inside WhatsApp by changing some of its settings. <ul><li>Open WhatsApp</li><li>Click on settings</li><li>Click on <b>Data Usage</b></li><li>Choose the content that your phone can download over mobile data</li><li>Choose the content that you allow your phone to download on Wi-Fi</li><li>Choose if you want to lower the amount of data usage during WhatsApp calls</li></ul>"
}]
},{
"id": "4",
"tag": "tracking_data",
"header": "Tracking your Data",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Data consumption",
"gifUrl": "trackingdata1",
"description": "Each Android phone comes with a menu where you can follow your data consumption. You can follow it over time, but also to see which apps consume data.\nIt might look different on different phones, but should be accessible within the <b>Settings</b> <img src=\"ic_settings_applications_white_24dp\"/> app. Find the option that says <b>Data Usage</b> <img src=\"ic_data_usage_white_24dp\"/>."
}, {
"id": "2",
"title": "Inspecting your Data Usage",
"gifUrl": "trackingdata2",
"description": "The graph at the top shows how much data you use over time. At the end of each day, you can see how much of your data has been consumed. You can reset this graph when you buy data."
}, {
"id": "3",
"title": "Apps",
"gifUrl": "trackingdata3",
"description": "Below the graph is a list of apps that have been consuming data. <b>Check this list to make sure there are no apps you didnt expect to be there</b>. <br>For example, you might discover that Gmail consumed 50MB of data recently, but you rarely use Gmail. This might mean that you should change your settings inside the app, or restrict the apps data usage.<br>To see the usage of any app in particular, simply click on its icon in the list."
}, {
"id": "4",
"title": "Data Usage Tips",
"gifUrl": "data2",
"description": "There are many ways to make sure your phone uses small amounts of data, or only uses data when you want it to.\nFor more information and tips, check out the next tutorial called <a href=\"mozilladso:///tutorials/data\">Using your data wisely</a>."
}]
},{
"id": "5",
"tag": "airplane_mode",
"header": "Airplane Mode",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Finding the Airplane Mode button",
"gifUrl": "airplanemode1",
"description": "Turning on Airplane Mode instantly disables <b>all wireless functionality</b> of your phone. For example, Wi-Fi, Cell, Bluetooth, and GPS will not operate.<br><br>This feature is useful for keeping your phone on, but restricting its network access. Until you turn Airplane Mode off, you will not be able to receive phone calls or access the internet."
}, {
"id": "2",
"title": "In the Notification Bar",
"gifUrl": "airplanemode2",
"description": "On newer phones, simply swipe down the Notification Bar at the top of your screen, and look for the airplane icon<img src=\"ic_airplanemode_active_white_24dp\"/>. Tap the icon to turn Airplane Mode <b>ON</b> or <b>OFF</b>. <br><br> You can also find this feature in Settings <img src=\"ic_settings_applications_white_24dp\"/> or from your phone's power button."
}, {
"id": "3",
"title": "In the Wireless Settings Menu",
"gifUrl": "airplanemode3",
"description": "You can also toggle Airplane Mode from the Settings menu. On all Android phones, including older phones, open <b>Settings</b> <img src=\"ic_settings_applications_white_24dp\"/>, choose \"<b>More…</b>\" in the <b>Wireless & Networks</> section, and check the box that says \"<b>Airplane Mode</b>\"."
}]
},{
"id": "6",
"tag": "storage",
"header": "Freeing up Memory",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Storage Space",
"gifUrl": "storage1",
"description": "Your phone has limited space for apps, videos, images, and other content you have stored. There are a few things you can check to free up some space."
}, {
"id": "2",
"title": "Checking your Storage",
"gifUrl": "storage2",
"description": "Within the <b>Settings</b> <img src=\"ic_settings_applications_white_24dp\"/> app youll find the <b>Storage & USB</b> <img src=\"ic_storage_white_24dp\"/> menu. You will be shown a breakdown of the Apps, Images, Videos, Audio, and Other content that's using up your phone's memory."
}, {
"id": "3",
"title": "Evaluating Items",
"gifUrl": "storage3",
"description": "The size of content on your phone is measured in MB, and GB, where MB is the smallest, and GB is the biggest. If an app consumes 2GB of space, it is much larger than an image that consumes 2MB.\nConfirm that the size of each type of content is as you expect and as you want. If your phone has many images and youre having trouble installing a new app, consider deleting some."
}]
},{
"title": "Speed and Stability",
"gifUrl": "wifi4",
"description": "Wi-Fi networks are generally more stable and faster than mobile data networks. Downloading files or watching videos is best over Wi-Fi.\n<b>Be aware:</b> it is not <b>always</b> the case that Wi-Fi is faster and more stable than mobile data. Depending on infrastructure, popularity, and other environmental factors, Wi-Fi may not be as responsive or reliable."
}]
}, {
"id": "2",
"tag": "connect_wifi",
"header": "Connecting to Wi-Fi",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Finding Names and Passwords",
"gifUrl": "connectwifi1",
"description": "To connect to a Wi-Fi hotspot, you will need <b color=\"#E4BC4D\">the name of the hotspot</b> and, in some cases, <b color=\"#E4BC4D\">its password</b>. If you are in a business, cafe, or other public space, you can usually ask the owner of the hotspot for this information. Some places charge a small fee for using their Wi-Fi."
}, {
"id": "2",
"title": "Turning on Wi-Fi",
"gifUrl": "connectwifi2",
"description": "On most Android phones, you can swipe down the Notification Bar at the top of the screen and tap the Wi-Fi <a href=\"mozilladso:///actions/connect_wifi\"><img src=\"ic_network_wifi_white_24dp\"/></a> icon. If you are close to a Wi-Fi network you have joined before, <b>your phone will try to connect to it automatically</b>."
}, {
"id": "3",
"title": "Turning on Wi-Fi from the Wireless Settings Menu",
"gifUrl": "connectwifi3",
"description": "On Android phones, to make sure your Wi-Fi is on, open the <b>Settings</b> app <img src=\"ic_settings_applications_white_24dp\"/>, and tap <b>Wi-Fi</b> icon <img src=\"ic_network_wifi_white_24dp\"/>. If your Wi-Fi is OFF, look near the top of the screen and then tap the toggle switch [cropped screenshot] to move it into the \"ON\" position."
}, {
"id": "4",
"title": "Finding your hotspot in the Wi-Fi list",
"gifUrl": "connectwifi4",
"description": "If your phone hasn't already automatically connected to a Wi-Fi hotspot, you will need to use your phone to search for the hotspot you want to connect to.\n If you are already in the Wi-Fi Settings Menu from the last step, simply wait until you see the name of the Wi-Fi hotspot that you want to connect to. Otherwise, open the Settings app <img src=\"ic_settings_applications_white_24dp\"/>, and click on the Wi-Fi icon <img src=\"ic_network_wifi_white_24dp\"/>. If your Wi-Fi is on, you will see a list of all the Wi-Fi hotspots around you."
}, {
"id": "5",
"title": "Connecting to a Wi-Fi hotspot",
"gifUrl": "connectwifi5",
"description": "When you see the Wi-Fi hotspot that you want to connect to, tap it. If it doesn't require a password, your phone will try to connect. When it does, it will read <b>Connected</b>.\nYou may also see your phone say <b>Authenticating</b> or <b>Obtaining IP Address</b>. These are normal steps in making a Wi-Fi connection.\nIf asked for a password, usishtuke! Just go to the next step."
}, {
"id": "6",
"title": "Entering a Password",
"gifUrl": "connectwifi6",
"description": "<i>If your phone has already connected to the correct Wi-Fi hotspot, you can skip this step, and just go enjoy the Internet. :)</i><br>Some Wi-Fi hotspots require a password. In this case, a box will appear that asks for a password. If you dont know the password, ask for help from the owner of the hotspot. Once you have the password, use the keyboard that pops up to enter it."
}, {
"id": "7",
"tag": "playstore",
"header": "The Play Store",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Home of Many Apps",
"gifUrl": "playstore1",
"description": "The Play Store lets you download apps on your phone. You can search for different kinds of apps like games, learning apps, social media apps, photo-editing apps, and more.\nSome apps on the Play Store are free, and some costs money. Dont worry though: you will always be asked to confirm if you are about to spend money."
}, {
"id": "2",
"title": "Opening the Play Store",
"gifUrl": "storage2",
"description": "To start, look for the Play Store icon on your phones screen. If you cant find it, try looking in the apps <img src=\"ic_blur_circular_white_24dp\"/> menu."
}, {
"id": "3",
"title": "Accounts",
"gifUrl": "playstore2",
"description": "Google, the company that created both Android and the Play Store, wants you to have a Google account with them before you use the Play Store. If youre using the Play Store for the first time, you may be asked to set up a Google account. You can pick a username and a strong password for your account when you sign up. If you need help coming up with a good password, look at <a href=\"mozilladso:///tutorials/accounts_passwords\">Accounts and Passwords</a>."
}, {
"id": "4",
"title": "Searching for Apps",
"gifUrl": "playstore4",
"description": "Now that you have access to the Play Store, you can look for apps you want! There are millions to choose from to help organize your life, search for information, have fun, and more. You just have to search!"
}, {
"id": "5",
"title": "Browsing for Apps",
"gifUrl": "playstore5",
"description": "You can also look at lists of apps in different categories and discover new ones as you look. Try clicking on the different categories to look for new and interesting apps."
}, {
"id": "6",
"title": " Reviewing and Downloading",
"gifUrl": "playstore6",
"description": "Before downloading an app, always look at its rating, description and the comments posted about it by other people to learn more about the app. Because apps can be made by anybody, ratings and comments are the best way to know if an app does what it claims, or if it is poorly made."
}, {
"id": "7",
"title": "Giving your own review",
"gifUrl": "playstore7",
"description": "Once youve downloaded and used an app, you can rate it and comment about it in the Play Store. Your feedback helps create a safe environment by giving people reliable information about whether or not apps are well-made, useful and appropriate."
}, {
"id": "8",
"title": "Updating",
"gifUrl": "playstore8",
"description": "Occasionally, app creators will need to update or change the content of the app. So, often, they issue updates for their apps through the Play Store.\nUpdating apps consumes data. However, the Play Store will try to download updates automatically when youre connected to a Wi-Fi hotspot. Check out <a href=\"mozilladso:///tutorials/data/6\">Disable Auto-Update</a> if you suspect that apps are being updated with your mobile data connection."
}]
},{
"title": "Fixing Problems",
"gifUrl": "connectwifi7",
"description": "If you have problems connecting, here are some things you can try:<ul><li>Make sure you're not too far from the hotspot.</li><li>Make sure you have the right hotspot name.</li><li>Make sure you have the right password.</li><li>If you have the right password, make sure it's entered correctly.</><li>Talk to the hotspot owner (shopkeeper, librarian, IT assistant, etc.) and explain your problems.</li><li>As a last resort, reboot your phone.</li></ul>"
}, {
"id": "8",
"tag": "accounts_passwords",
"header": "Accounts and Passwords",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Accounts",
"gifUrl": "accounts1",
"description": "An account is the identity you use to sign into and use an app or service. Companies and other people can often observe your account activity to see how you use apps, services, and websites."
}, {
"id": "2",
"title": "Multiple Accounts",
"gifUrl": "accounts2",
"description": "Companies often want you to make an account specifically for their services. For example, Facebook wants you to have a Facebook account to interact with people there, and Google wants you to have a Google account to use apps like the Play Store."
}, {
"id": "3",
"title": "A Different Password for Each Account",
"gifUrl": "accounts3",
"description": "<b>You should use a different password for every account you make.</b>\nImagine you use Facebook and Gmail with the same password. If someone discovers your Facebook password, they also have access to your Gmail. By using a different password for every account, the only account they have access to is Facebook."
}, {
"id": "4",
"title": "Making a Strong Password",
"gifUrl": "accounts4",
"description": "Strong passwords usually have\n<ul><li>At least 8 characters.</li><li>Uppercase and lowercase letters.</li><li>Letters, numbers, and punctuation marks.</li></ul>\nTry to pick passwords that are memorable to you, but not based on personal information other people can easily find out about you."
}, {
"id": "5",
"title": "Using a Memorable Sentence",
"gifUrl": "accounts5",
"description": "To create and remember a strong password, think of a memorable sentence and use the first letter of each word. For example, \"<b>I buy 2 mangos at the market every week</b>\" becomes \"<b>Ib2matmew/b>\" ."
}, {
"id": "6",
"title": "Using a String of Random Words",
"gifUrl": "accounts6",
"description": "Random strings of common words, such as \"Mousetrap Sandwich Hospital Anecdote,\" tend to work well, too.\nTo help you remember the words you choose, use them to imagine a scene. For example, cat, home, battery, and cake, might become \"a cat living in a house on a cake made of batteries\"."
}, {
"id": "7",
"title": "What kinds of passwords should I avoid?",
"gifUrl": "accounts7",
"description": "Impostors can easily break short passwords and passwords made up of sequential numbers like \"1234\". They can also guess passwords that are made of simple words like \"mydata\". Impostors can use what they know about you to guess passwords based on important dates in your life (such as birthdays or anniversaries) or the names of people (including celebrities and sports teams) or places you know."
}]
}],
"title": "Fixing Problems Continued",
"gifUrl": "connectwifi8",
"description": "Sometimes even with the correct hotspot name and password, connection problems will persist. In this case, you can try removing the hotspot from your phone's memory and then reconnecting. Go to the Wi-Fi Settings Menu (see Frame), and find the problematic hotspot's name. Then, press and hold on the hotspots name until a menu appears. Choose \"Forget Network\". Then, try connecting again. You may have to re-enter your password, so have it ready.\nSometimes a hotspot will be set up to work with specific devices and it may not let you connect to the internet even though it looks like it should. If you really can't connect to the one you picked, try to find another hotspot."
}, {
"id": "9",
"title": "Enjoy :-)",
"gifUrl": "connectwifi9",
"description": "Now, you should be connected! Enjoy! :-)"
}]
}, {
"id": "3",
"tag": "data",
"header": "Mobile Data Consumption",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Mobile Data vs. Wi-Fi",
"gifUrl": "data1",
"description": "To access the internet, your phone uses a <b>mobile data</b> connection or a <b>Wi-Fi</b> connection. Mobile data is sold by your service provider and is measured in kilobytes, megabytes and gigabytes. Wi-Fi hotspots rely on service providers for their internet, too. So, <b>connecting to a Wi-Fi hotspot, will use its data instead of yours.</b>"
}, {
"id": "2",
"title": "Apps Use Data",
"gifUrl": "data2",
"description": "<b>Data is used to move content around the internet.</b> Many apps (Google, Yahoo, Facebook, WhatsApp, Opera, Instagram, Branch) will consume data because they connect to the internet. Applications like Opera Mini use less data than others because they restrict images and video. Others, like YouTube, use much more data because they use video content."
}, {
"id": "3",
"title": "Use Airplane Mode",
"gifUrl": "airplanemode1",
"description": "When you are not using your phone or expecting a call from anyone, you can turn on <b>Airplane Mode</b>. This will turn off your phones wireless radios completely. Phone calls, mobile data, and bluetooth connections will all be blocked, so no airtime or data will be used. To learn how to turn it on, check out <a href=\"mozilladso:///tutorials/airplane_mode\">Airplane Mode</a>."
}, {
"id": "4",
"title": "Restrict Background Data",
"gifUrl": "data4",
"description": "The easiest way to save data is to tell your apps (or the Android system itself) to restrict background data. Some apps continue to use data (in the \"background\") when you're not specifically using them: syncing email, updating feeds, checking the weather, etc."
}, {
"id": "5",
"title": "Connect to Wi-Fi",
"gifUrl": "connectwifi2",
"description": "The more Wi-Fi you use, the more data you save. Wi-Fi connections are usually stronger, more stable, and less costly than cellular (mobile) ones, though sometimes you have to pay to use someone elses hotspot. To learn how to connect to Wi-Fi, <a href=\"mozilladso:///tutorials/connect_wifi\">Connecting Wi-Fi</a>."
}, {
"id": "6",
"title": "Disable Auto-update",
"gifUrl": "auto_update",
"description": "A lot of data is also consumed by your phone automatically updating your apps. If your apps were downloaded through Google Play (most are) it may be using \"auto-update\" and could be chewing its way through your data without you even knowing."
}, {
"id": "7",
"title": "Check your Apps' Settings",
"gifUrl": "data7",
"description": "Some applications are designed to do work even when you're not specifically using them. Most of them use data by default usually to provide you with regular notifications or updates.\nCheck the settings or preferences in your apps to verify that they aren't using data all the time. In some cases, you can have the choice to \"sync\" (connect to the internet) over Wi-Fi only.\n\n<b>In Chrome</b>, you can turn on \"Data Saver\" in the settings to save up to 35% of your data usage.\n\n<b>In Opera</b>, you can use \"compression\" that will let you enjoy the internet and save data."
}, {
"id": "8",
"title": "Check your Whatsapp Settings",
"gifUrl": "data8",
"description": "<b>Whatsapp</b> >> <b>Settings</b> >> <b>Data Usage</b> >> <b>Media-auto-download</b>"
}]
},{
"id": "4",
"tag": "tracking_data",
"header": "Tracking your Data",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Data consumption",
"gifUrl": "trackingdata1",
"description": "Each Android phone comes with a menu where you can follow your data consumption. You will be able to follow your data consumption over time, but also to see which apps consume data.\nIt might look different on different phones, but should be accessible within the <b>Settings</b> <img src=\"ic_settings_applications_white_24dp\"/> app. Find the option that says <b>Data Usage</b> <img src=\"ic_data_usage_white_24dp\"/>."
}, {
"id": "2",
"title": "Inspecting your Data Usage",
"gifUrl": "trackingdata2",
"description": "With <b>Data Usage</b> there are two things to notice:\nThe graph at the top shows how much data you use over time. At the end of each day, you can see how much of your data has been consumed. You can reset this graph when you buy data."
}, {
"id": "3",
"title": "Apps",
"gifUrl": "trackingdata3",
"description": "Below the graph is a list of apps that have been consuming data. Check this list to make sure there are no apps you didnt expect to be there. For example, you might discover that Gmail consumed 50MB of data recently, but you rarely use Gmail. This might mean that you should change your settings inside the app, or restrict the apps data usage.\nTo see the usage of any app in particular, simply click on its icon in the list."
}, {
"id": "4",
"title": "Data Usage Tips",
"gifUrl": "data2",
"description": "There are many ways to make sure your phone uses small amounts of data, or only uses data when you want it to.\nFor more information and tips, check out <a href=\"mozilladso:///tutorials/data\">Mobile Data Consumption</a>."
}]
},{
"id": "5",
"tag": "airplane_mode",
"header": "Airplane Mode",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Finding the Airplane Mode button",
"gifUrl": "airplanemode1",
"description": "Turning on Airplane Mode instantly disables <b>all wireless functionality</b> of your phone. For example, Wi-Fi, Cell, Bluetooth, and GPS will not operate.\nThis feature is useful for keeping your phone on, but limiting its contact with networks. Until you turn Airplane Mode off, you will not be able to receive phone calls or access the internet."
}, {
"id": "2",
"title": "In the Notification Bar",
"gifUrl": "airplanemode2",
"description": "On newer phones, simply swipe down the Title Bar at the top of your screen, and look for the airplane icon<img src=\"ic_airplanemode_active_white_24dp\"/>. Tap the icon to turn Airplane Mode <b>ON</b> or <b>OFF</b>."
}, {
"id": "3",
"title": "In the Wireless Settings Menu",
"gifUrl": "airplanemode3",
"description": "You can also toggle Airplane Mode from the Settings menu. On all Android phones, including older phones, open <b>Settings</b> <img src=\"ic_settings_applications_white_24dp\"/>, choose \"<b>More…</b>\" in the <b>Wireless & Networks</> section, and check the box that says \"<b>Airplane Mode</b>\"."
}, {
"id": "4",
"title": "Using Wi-Fi",
"gifUrl": "airplanemode4",
"description": "Even with Airplane mode turned on, you are still able to use Wi-Fi if you switch it on explicitly. This will ensure that mobile data is not used. Check out <a href=\"mozilladso:///tutorials/connect_wifi\">Connecting to Wi-Fi</a> for more information."
}]
},{
"id": "6",
"tag": "storage",
"header": "Freeing up Memory",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Storage & USB",
"gifUrl": "storage1",
"description": "As you may have already seen, your phone has limited space for apps, videos, images, and other content you have stored. There are a few things you can check to free up some space."
}, {
"id": "2",
"title": "Checking your Storage",
"gifUrl": "storage2",
"description": "Within the <b>Settings</b> <img src=\"ic_settings_applications_white_24dp\"/> app youll find the <b>Storage & USB</b> <img src=\"ic_storage_white_24dp\"/> menu. You will be shown a breakdown of the Apps, Images, Videos, Audio, and Other content that's using up your phone's memory."
}, {
"id": "3",
"title": "Evaluating Items",
"gifUrl": "storage3",
"description": "The size of content on your phone is measured in MB, and GB, where MB is the smallest, and GB is the biggest. If an app consumes 2GB of space, it is much larger than an image that consumes 2MB.\nConfirm that the size of each type of content is as you expect and as you want. If your phone has many images and youre having trouble installing a new app, consider deleting some."
}, {
"id": "4",
"title": "Check your Apps",
"gifUrl": "storage4",
"description": "Some apps like Whatsapp automatically download content that is sent to you from a friend or a group. You can delete this content from your phone and retrieve it again later, or prevent it from being downloaded to your phone automatically altogether.\nVideos and images you have shared on Whatsapp can always be downloaded by the friend or group youve sent them to, regardless of whether or not those videos or images are currently on your phone."
}]
},{
"id": "7",
"tag": "playstore",
"header": "The Play Store",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Home of Many Apps",
"gifUrl": "playstore1",
"description": "The Play Store lets you download apps on your phone. You can search the app store for different kinds of apps like games, learning apps, social media apps, photo-editing apps, and more.\nSome apps on the Play Store are free, and some costs money. Dont worry though: you will always be asked to confirm if you are about to spend money."
}, {
"id": "2",
"title": "Opening the Play Store",
"gifUrl": "storage2",
"description": "To start, look for the Play Store icon on your phones screen. If you cant find it, try looking in the apps <img src=\"ic_blur_circular_white_24dp\"/> menu."
}, {
"id": "3",
"title": "Accounts",
"gifUrl": "playstore2",
"description": "Google, the company that created both Android and the Play Store, wants you to have a Google account with them before you use the Play Store. If youre using the Play Store for the first time, you may be asked to set up a Google account. You can pick a username and a strong password for your account when you sign up. If you need help coming up with a good password, look at <a href=\"mozilladso:///tutorials/accounts_passwords\">Accounts and Passwords</a>."
}, {
"id": "4",
"title": "Searching for Apps",
"gifUrl": "playstore4",
"description": "Now that you have access to the Play Store, you can look for apps you want! There are millions to choose from to help organize your life, search for information, have fun, and more. You just have to search!"
}, {
"id": "5",
"title": "Browsing for Apps",
"gifUrl": "playstore5",
"description": "You can also look at lists of apps in different categories and discover new ones as you look. Try clicking on the different categories to look for new and interesting apps."
}, {
"id": "6",
"title": " Reviewing and Downloading",
"gifUrl": "playstore6",
"description": "Before downloading an app, always look at its rating, description and the comments posted about it by other people to learn more about the app. Because apps can be made by anybody, ratings and comments are the best way to know if an app does what it claims, or if it is poorly made."
}, {
"id": "7",
"title": "Reviewing and Downloading (cont'd)",
"gifUrl": "playstore7",
"description": "Once youve downloaded and used an app, you can rate it and comment about it in the Play Store. Your feedback helps create a safe environment by giving people reliable information about whether or not apps are well-made, useful and appropriate."
}, {
"id": "8",
"title": "Updating",
"gifUrl": "playstore8",
"description": "Occasionally, app creators will need to update or change the content of the app. So, often, they issue updates for their apps through the Play Store.\nUpdating apps consumes data. However, the Play Store will try to download updates automatically when youre connected to a Wi-Fi hotspot. Check out <a href=\"mozilladso:///tutorials/data/8\">Disable Auto-Update</a> if you suspect that apps are being updated with your mobile data connection."
}]
},{
"id": "8",
"tag": "accounts_passwords",
"header": "Accounts and Passwords",
"photoUrl": "url",
"steps": [{
"id": "1",
"title": "Accounts",
"gifUrl": "accounts1",
"description": "An account is the identity you use to sign into and use an app or service. Companies and other people can often observe your account activity to see how you use apps, services, and websites."
}, {
"id": "2",
"title": "Multiple Accounts",
"gifUrl": "accounts2",
"description": "Companies often want you to make an account specifically for their services. For example, Facebook wants you to have a Facebook account to interact with people there, and Google wants you to have a Google account to use apps like the Play Store."
}, {
"id": "3",
"title": "A Different Password for Each Account",
"gifUrl": "accounts3",
"description": "<b>You should use a different password for every account you make.</b>\nImagine you use Facebook and Gmail with the same password. If someone discovers your Facebook password, they also have access to your Gmail. By using a different password for every account, the only account they have access to is Facebook."
}, {
"id": "4",
"title": "Making a Strong Password",
"gifUrl": "accounts4",
"description": "Strong passwords usually have\n<ul><li>At least 8 characters.</li><li>Uppercase and lowercase letters.</li><li>Letters, numbers, and punctuation marks.</li></ul>\nTry to pick passwords that are memorable to you, but not based on personal information other people can easily find out about you."
}, {
"id": "5",
"title": "Using a Memorable Sentence",
"gifUrl": "accounts5",
"description": "To create and remember a strong password, think of a memorable sentence and use the first letter of each word. For example, \"<b>I buy 2 mangos at the market every week</b>\" becomes \"<b>Ib2matmew/b>\" ."
}, {
"id": "6",
"title": "Using a String of Random Words",
"gifUrl": "accounts6",
"description": "Random strings of common words, such as \"Mousetrap Sandwich Hospital Anecdote,\" tend to work well, too.\nTo help you remember the words you choose, use them to imagine a scene. For example, cat, home, battery, and cake, might become \"a cat living in a house on a cake made of batteries\"."
}, {
"id": "7",
"title": "What kinds of passwords should I avoid?",
"gifUrl": "accounts7",
"description": "Impostors can easily break short passwords and passwords made up of sequential numbers like \"1234\". They can also guess passwords that are made of simple words like \"mydata\". Impostors can use what they know about you to guess passwords based on important dates in your life (such as birthdays or anniversaries) or the names of people (including celebrities and sports teams) or places you know."
}]
}],
"quizes": [
{
"id": "1",

Просмотреть файл

@ -12,6 +12,8 @@
<dimen name="card_elevation">2dp</dimen>
<dimen name="tooltip_button_margin">10dp</dimen>
<dimen name="stream_card_corner_radius">0dp</dimen>
<dimen name="card_corner_radius">2dp</dimen>

Просмотреть файл

@ -18,18 +18,34 @@
</style>
<style name="AppTheme.SplashTheme" parent="AppTheme">
<item name="actionBarStyle">@style/DSOActionBar.Dashboard</item>
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/DSOActionBar.Dashboard</item>
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
<style name="AppTheme.Dashboard" parent="AppTheme">
<item name="actionBarStyle">@style/DSOActionBar.Dashboard</item>
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/DSOActionBar.Dashboard</item>
</style>
<style name="DSOActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="android:titleTextStyle" tools:ignore="NewApi">@style/DSOActionBarTitle</item>
<item name="android:background" tools:ignore="NewApi">@color/colorPrimary</item>
<item name="background">@color/colorPrimary</item>
</style>
<style name="DSOActionBar.Dashboard" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="android:titleTextStyle" tools:ignore="NewApi">@style/DSOActionBarTitle.Dashboard</item>
<item name="android:background" tools:ignore="NewApi">@color/colorPrimary</item>
<item name="background">@color/colorPrimary</item>
</style>
<style name="DSOActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor" tools:ignore="NewApi">@color/colorTextPrimary</item>
</style>
<style name="DSOActionBarTitle.Dashboard" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor" tools:ignore="NewApi">@color/colorIcons</item>
</style>
<declare-styleable name="CheckableLinearLayout">
<attr name="is_checked" format="boolean" />

Просмотреть файл

@ -14,7 +14,7 @@
# If versions end in odd numbers they are development builds, even versions are release candidates.
# The AndroidManifest.xml must also be updated currently.
org.gradle.jvmargs=-Xmx2048M
version=0.2.0-SNAPSHOT
version=0.2.1-SNAPSHOT
# Using these variables to sync dependency version numbers across sub-projects.
android_support_lib_version = 23.4.0