Sr. No. Page No. Annexure I - Micro Project Proposal 1-2
Sr. No. Page No. Annexure I - Micro Project Proposal 1-2
1 3.Proposed Methodology 1
4. Action Plan 2
5. Resources Required 2
1.Rationale 4
4. Literature Review 4
1
Annexure-I
Micro-Project proposal
Wallpaper Application
3. Proposed Methodology
This is a prospective, longitudinal, exploratory, open study with a 6-month follow-up
period. Data will be recorded longitudinally over multiple weeks under natural conditions.
The factors affecting the quality of life and anxiety of parents of children with ASD and the
children's functional symptoms will be examined, and the feasibility of using a smartphone
application designed for parents of ASD patients will be assessed. Primary objective: Explore
the evolution of a child's behaviour over 6 months and the (psychological and social) effects
of these changes on the family. Secondary objective: Assess the feasibility of our application
by examining the filling rate and application usage by parents for 6 months. 100 families
containing 1 child diagnosed with ASD will be included. At baseline, sociodemographic,
psychiatric and medical data will be recorded.
2
4. Action Plan
Sr. Planned Planned Name of Responsible Team
Details of Activity
No. Start date Finish date Members
1 Search the topic 02/02/2023 07/02/2023
2 Search the information 09/02/2023 28/02/2023
3 Algorithm developing 02/03/2023 09/03/2023
4 Flowchart developing 14/03/2023 02/02/2023
Shewalkar Rohini Suryakant
5 Function making 21/03/2023 23/03/2023
6 Coding developing 27/03/2023 06/04/2023
7 Debugging 11/04/2023 13/04/2023
8 Finalizing Project with 17/04/2023 20/04/2023
its report
5.Resources Required:
Sr.
Name of resource / material Specification Quantity Remarks
No.
1 Computer WINDOWS 7,2GB RAM, 1
2 Operating System WINDOWS 7 1
4 Browser Chrome 1
3
Annexure – II
Micro-Project proposal
Wallpaper Application
1.Rationale:
Any project proposal would require a project background or rationale to explain the donor
agency how the problematic situation has existed. This can be a very important part of the
proposal because here you try to convince the donor agency the necessity of putting its
money in there. But project background or project rationale cannot be the same if you are
proposing different projects. However, the basic situation of your project area can be the
same. For example, the healthcare situation, educational background or unemployment rate
which can be generally referenced in the project rationale can remain the same. So it is
helpful to develop a text paragraph on the basic background situation of the project area.
4.Literature Review:
A wallpaper or background (also known as a desktop wallpaper, desktop background,
desktop picture or desktop image on computers) is a digital image (photo, drawing etc.)
used as a decorative background of a graphical user interface on the screen of a
computer, smartphone or other electronic device. On a computer, wallpapers are
generally used on the desktop, while on a mobile phone they serve as the background
for the home screen.
4
5.Actual Methodology Followed:
The wallpaper Android app we will be creating will contain a vertical scrolling Recycler
View. This Recycler View will contain a list of cards for the each wallpaper. The wallpaper
card will show an image of the wallpaper and a title underneath.When the wallpaper card
image is selected, it will set the wallpaper on the device to the image selected. Take a look at
a screenshot of wallpaper Android App we will be creating below.
5.1 Flowchart:
• AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wallpaperapplication">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
5
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.WallpaperApplication">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ViewWallpaper"/>
</application>
</manifest>
• activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EDEDED"
android:orientation="vertical"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/white"
app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/Toolbar.Light">
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="MissingClass">
<ListView
android:id="@+id/list"
6
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@null"
android:listSelector="@android:color/transparent"
android:scrollbars="none"
tools:listitem="@layout/list_items" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
• listitem.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="220dp"
android:layout_margin="10dp"
app:cardCornerRadius="10dp"
app:cardBackgroundColor="@color/colorPrimaryDark"
app:cardElevation="2dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/listImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/app_name"
android:scaleType="centerCrop"
android:src="@drawable/no_image" />
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#32000000" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/title"
7
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="bottom"
android:padding="5dp"
android:text="@string/title"
android:fontFamily="@font/poppinsmedium"
android:textColor="@color/white"
android:textSize="20sp" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageView
android:layout_width="45dp"
android:layout_height="45dp"
android:background="#85272727"
android:padding="10dp"
android:layout_margin="10dp"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_hd" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
• activity_view_wallpaper.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:rotationX="-360"
tools:context=".ViewWallpaper">
<ImageView
android:id="@+id/imageFull"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/app_name"
android:scaleType="centerCrop"
android:src="@drawable/no_image" />
<ImageView
8
android:id="@+id/downloadImage"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_marginEnd="30dp"
android:layout_marginBottom="30dp"
android:background="#85272727"
android:contentDescription="@string/app_name"
android:padding="10dp"
android:src="@drawable/ic_download"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginBottom="30dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent">
<Button
android:id="@+id/setLockScreen"
android:layout_width="187dp"
android:layout_height="78dp"
android:layout_margin="5dp"
android:background="#85272727"
android:padding="10dp"
android:text="@string/lock_screen"
android:textColor="@color/white"
android:textSize="13sp" />
• MainActivity.java
package com.example.wallpaperapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.app.VoiceInteractor;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
9
import java.util.List;
public class MainActivity extends AppCompatActivity {
ListView listView;
List<DataHandler> dataHandlerList;
SwipeRefreshLayout swipeRefreshLayout;
WallpaperAdapter wallpaperAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list);
dataHandlerList = new ArrayList<>();
swipeRefreshLayout = findViewById(R.id.swipe);
loadData("first");
loadData();
swipeRefreshLayout.setOnRefreshListener(new
SwipeRefreshLayout.OnRefreshListener(){
@Override
public void onRefresh(){
loadData("Refresh");
}});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
String title,image;
title=dataHandlerList.get(position).getTitle();
image=dataHandlerList.get(position).getImage();
Intent intent=new Intent(getApplicationContext(),ViewWallpaper.class);
intent putExtra(name:"title",title);
intent putExtra(name:"image",image);
startActivity(intent);
}
});}
private void loadData(String type) {
swipeRefreshLayout.setRefreshing(true);
RequestQueue queue = Volly.newRequestQueue(context this);
StringReuest stringReuest = new StringRequest(Request.Method.GET,
url:"https://cewallpaper.herokuapp.com/apis/",
new Response, Listener < String > () {
@Override
public void OnResponse (String Response){
swipeRefreshLayout.setRefreshing(false);
parseJSON(response,type);
}
10
},new Response.Errorlistener() {
@Override
public void onErrorResponse(vollyError error) {
Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_LONG).show(
;
}
}
;
queue.add(stringReuest);
}
private <type> void parseJSON(.String type) {
parseJSON();
}
private <type> void parseJSON(String res.String type){
String title,tumbnail,image;
if (!type.euals("Refresh")) {
} else {
dataHandlerList.clear();
wallpaperAdapter.notifyDataSetChanged();
}
try {
JSONArray jsonArray=new JSONArray(res);
for (int i=0;i<JSONArray.length();i++){
JSONObject jsonObject=jsonArray.getJSONObject(i);
title=jsonObject.get("title").toString();
thumbnail=jsonObject.get("thumbnail").toString();
image=jsonObject.get("image").toString();
dataHandlerList.add(new DataHandler(title,thumbnail,image));
}
wallpaperAdapter=new
WallpaperAdapter(getApplicationContext(),R.Layout.list_items,dataHandlerList);
listView.setAdapter(wallpaperAdapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
• ViewWallpaper.java
package com.example.wallpaperapplication;
import android.Manifest;
import android.app.WallpaperManager;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
11
import android.view.WindowManager;
import android.webkit.PermissionRequest;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOError;
import java.io.IOException;
import java.lang.annotation.Target;
import javax.sql.DataSource;
public class ViewWallpaper extends AppCompatActivity {
String title,image,imageFilename;
DisplayMetrics displayMetrics;
BitmapDrawable bitmapDrawable;
WallpaperManager wallpaperManager;
ImageView imageViewFull,imageViewDownload;
Button buttonLockScreen,getButtonHomeScreen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_wallpaper);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
title=getIntent().getStringExtra(name:"title");
image=getIntent().getStringExtra(name:"image");
imageViewDownload=findViewById(R.id.downloadImage);
buttonLockScreen=findViewById(R.id.setLockScreen);
buttonHomeScreen=findViewById(R.id.setHomeScreen);
Glide.with(activity:this).load(image).centerCrop()
.listener(new RequestListener<Drawable>(){
@Override
public boolean onLoadFailed (@Nullable GlideException e, Object model,
Target<Drawable> target,boolean){
return false;
}
@Override
public boolean onResourceReady(Drawable resource,Object
model,Target<Drawable> target, DataSource) {
buttonLockScreen.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
12
setWallpaper("Lock");
}
} );
buttonHomeScreen.setOnClickListener(new View.OnClickListener(){
@Override
public void Onclick(View v){
setWallpaper("Home");
}
});
imageViewDownload.setOnClickListener(new View.OnClickListener(){
@Override
public void OnClick(View v){
Dexter.withContext(getApplicationContext())
.withPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.withListener(new PermissionListener() {
@Override
public void
onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {
downloadFromImageView();
}
@Override
public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse)
{Toast.makeText(getApplicationContext(),text:"Need Permission to download
image",Toast.LENGTH_SHORT).show();
}
@Override
public void
onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest,
PermissionToken permissionToken) {
}
}).check();}} );
return false;})
.error(R.drawable.no_image).placeholder(R.drawable.ic_loading)
.into(imageViewFull);}
private void downloadFromImageView(){
imageFilename=image.substring(image.lastIndexOf(str."/")+1);
FileOutputStream fileOutputStream;
File file=new
File(Environment.getExternalStorageDirectory(Environment.DIRECTORY_DCIM),child:"C
odesEasy-Wallpapers");
if (!file.exists()&& !file.mkdir()){
Toast.makeText(getApplicationContext(),text:"Failed",Toast.LENGTH_SHORT).show();
}
File fileName = new File(pathname:file.getAbsolutePath() + "/" + imageFilename);
13
int[] size = getScreenSize();
try {
fileOutputStream = new FileOutputStream(fileName);
bitmapDrawable = (BitmapDrawable) imageViewDownload.getDrawable();
bitmap = bitmapDrawable.getBitmap();
bitmap = Bitmap.createScaledBitmap(bitmap, size[0], size[1], filter:false);
bitmap.compress(Bitmap.CompressFormat.JPEG, quality:100, fileOutputStream);
Toast.makeText(getApplicationContext(), text:
"Saved to Gallerry\n" + fileName, Toast.LENGTH_SHORT).show();
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
refreshGallery(file);
}
}
private void refreshGallery(File file){
Intent intent=new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(Uri.fromFile(file));
sendBroadcast(intent);
}
private void setWallpaper(String type){
int[] size=getScreenSize();
wallpaperManager=wallpaperManager.getInstance(getApplicationContext());
bitmapDrawable=(BitmapDrawable) imageViewFull.getDrawable();
bitmap = bitmapDrawable.getBitmap();
bitmap= Bitmap.createScaledBitmap(bitmap,size[0],size[1], filter:false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (type.equals("Lock")) {
wallpaperManager.setBitmap(bitmap, visibleCropHint:null, allowBackup:
true, wallpaperManager.FLAG_LOCK);
Toast.makeText(getApplicationContext(),text:"LockScreen Wallpaper
set",Toast.LENGTH_SHORT).show();
} else {
wallpaperManager.setBitmap(bitmap, visibleCropHint:null, allowBckup:
true, wallpaperManager.FLAG_SYSTEM);
Toast.makeText(getApplicationContext(),text:"HomeScreen Wallpaper
set",Toast.LENGTH_SHORT).show();
}
}
else{
wallpaperManager.setBitmap(bitmap);
Toast.makeText(getApplicationContext(),text:" Wallpaper
14
",Toast.LENGTH_SHORT).show();
}
wallpaperManager.suggestDesiredDimensions(size[0],size[1]);
}catch (Exception e){
e.printStackTrace();
}
}
private int[] getScreenSize() {
displayMetrics=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int[] size=new int[2];
size[0]=displayMetrics.widthPixels;
size[1]=displayMetrics.heightPixels;
return size;
}
}
4 Browser Chrome 1
15
7.Output of the Micro-Project:
16
10. Skill developed / Learning out of the Micro-Project
The wallpaper Android app we will be creating will contain a vertical scrolling Recycler
View. This Recycler View will contain a list of cards for the each wallpaper. The wallpaper
card will show an image of the wallpaper and a title underneath. When the wallpaper card
image is selected, it will set the wallpaper on the device to the image selected.
11.Application
1.Abstruct
2.Muzie Live Wallpaper
3.Reddit
4.Vectorify da home
5.Sphaera
6.Walpy
7.WalP
8.Wallpapers by Google
9.Backdrops – Wallpapers
10.Forest Live Wallpaper
17
18