துவக்க நிலையாளர்களுக்கான ஆண்ட்ராய்டு பற்றிய பயிற்சிகையேடு பகுதி-11 பிரிப்பான்கள்

பிரிப்பான்கள் என்பது பயனாளர் இடைமுகம் செய்திடும் ஒரு பயன்-பாட்டினுடைய துனுக்கு ஆகும் அல்லது அதிகப்படியான கூறுநிலை செயல்பாட்டின் வடிவமைப்பினை இயலுமைசெய்திடும் ஒரு செயல்பாடடில் அமைந்த தன்மையாகும் . ஒரு பிரிப்பான் என்பது ஒரு துனை செயல்பாட்டின் ஒரு வகையாகும் என நாம் கூறுவது தவறானது அன்று. பின்வருபவை பிரிப்பான்களை பற்றிய முக்கிய செய்திகளாகும்:
ஒரு பிரிப்பான்ஆனது தனது சொந்த புறவமைப்பு, அதன் சொந்த வாழ்க்கை சுழற்சி, மீளஅழைத்தல் அதன் சொந்த நடத்தை ஆகிவற்றை கொண்டதாகும்
ஒரு செயல்பாடு இயங்கும் போது நாம் ஒரு செயல்பாட்டில ஒரு பிரிப்பானை சேர்க்க அல்லது நீக்க முடியும்.
நாம் ஒரு ஒற்றையான செயல்பாட்டில் ஒரு பல்லடுக்கு பயனாளர் இடைமுக பலகத்தை கட்டமைவு செய்வதற்கு பல பிரிப்பான்களை ஒன்றிணைக்க முடியும்
. ஒருபிரிப்பானை பல செயல்களில் பயன்படுத்த முடியும்.
ஒரு பிரிப்பானின் வாழ்க்கை சுழற்சியானது அதனுடைய முதன்மை புரவலரின் செயல்பாட்டில் வாழ்க்கை சுழற்சிக்கு மிக நெருக்கமாக இருக்கும் அதாவது அந்த செயல்பாடு இடைநிறுத்தப்படும்போது அந்த செயல்பாட்டில் தயாராக உள்ள அனைத்து பிரிப்பான்களின் செயல்களும் நிறுத்தப்பட வேண்டும் என்பதுதான் அதன் அர்த்தமாகும். .
பயனர் இடைமுக ஆக்கக்கூறு இல்லாத ஒரு நடத்தையை ஒரு பிரிப்பானில் செயல்படுத்த முடியும்.
API இன் பதிப்பு 11. ஆன ஆண்ட்ராய்டின் Honeycombஎனும் பதிப்பில் இந்த ஆண்ட்ராய்டு API -க்கு பல பிரிப்பான்களை சேர்க்கலாம்
பிரிப்பான் இனத்தின் விரிவாக்கத்தின் மூலம் நாம் பிரிப்பான்களை உருவாக்கிடமுடியும் அதனை தொடர்ந்து எனும் ஒருஉறுப்பாக செயல்பாடுகளுடைய புறவமைப்பு கோப்பில் பிரிப்பான்களை அறிவிப்பதன் மூலமாக நம்முடைய செயல்பாட்டின் புறவமைப்பிற்குள் ஒரு பிரிப்பானை உள்ளிணைக்க முடியும்
பிரிப்பான்களின் அறிமுகத்திற்குமுன்பு நமக்கு குறிப்பிட்ட வரையறைஉண்டு ஏனெனில் நமக்குஅளிக்கப்பட்ட நேரத்திற்குள் திரையில் ஒரே ஒரு செயல்பாட்டினை மட்டுமே நம்மால் காண்பிக்க முடியும் . எனவே நாம் நம்முடைய சாதனத்தின் திரையை தனித்தனியாக பிரித்து அவைகளை தனித்தனியாக வெவ்வேறு பகுதிகளில் கட்டுப்படுத்த முடியாது. ஆனால் இந்த பிரிப்பான்களின் அறிமுகத்துடன் அதிக நெகிழ்வு தன்மை நமக்கு கிடைக்கின்றது அதனை தொடர்ந்து நமக்குஅளிக்கப்பட்ட நேரத்திற்குள் திரையில் ஒரே ஒரு செயல்பாட்டினை மட்டுமே நம்மால் காண்பிக்க முடியும் என்ற வரையறையும் நீக்கப்பட்டுவிட்டது . இப்போது நாம் ஒரு செயல்பாட்டில் இருக்க முடியும் ஆனால் ஒவ்வொரு செயல்பாடும் தத்தமது சொந்த அமைப்பு, நிகழ்வுகள் , முழுமையான வாழ்க்கை சுழற்சிமுறை ஆகியவற்றை கொண்ட ஒரே செயலின் பல பிரிப்பான்களாக ஆக்கமுடியும். ஒரு திறன்பேசி வடிவமைப்பிற்காக ஆனால் ஒரு கைபேசி வடிவமைப்பிற்காக பிரிக்கப்பட்ட ஒரு செயலிற்குள் பிரிப்பான்களின் மூலம் ஒன்றிணைக்கமுடியும் என இரு பயனாளர் இடைமுகம் கூறுகளை எவ்வாறு வரையறுக்கமுடியும் என்ற ஒரு வித்தியாசமான எடுத்துகாட்டு பின்வருமாறு


1
இந்த பயன்பாடானதுஒரு திறன்பேசி அளவிலான சாதனத்தில் இயங்கிடும்போது Aஎனும் செயலில் இரு பிரிப்பான்களை உட்பொதியமுடியும் . எனினும், ஒரு கைபேசிஅளவிலான திரையில், இரு பிரிப்பான்கள் செயல்படுவதற்கு இடம் போதாது தான், எனவே செயல்பாடு Aஆனது கட்டுகளின் பட்டியலிற்காக பிரிப்பானிற்கு மட்டுமே உள்ளடங்கும், அதனை தொடர்ந்து பயனாளர் ஒரு கட்டினை தெரிவுசெய்தபோது, அதை செயல்பாடு Bஇல் துவங்கிடும் அதில்அதனை படிப்பதற்காக இரண்டாவது பிரிப்பான்உள்ளடங்கியிருக்கும்.
பிரிப்பானின் வாழ்க்கை சுழற்சிமுறை
ஒருஆண்ட்ராய்டு செயல்பாட்டினை போன்றே தங்களுடைய சொந்த வாழ்க்கை சுழற்சிமுறையை ஆண்ட்ராய்டு பிரிப்பான்களும் கொண்டுள்ளன. இந்த பிரிவில் அதன் வாழ்க்கை சுழற்சிமுறையின் பல்வேறு நிலைகளை விவரிக்கின்றது.
கட்டம்1: ஒரு பிரிப்பான் உருவாக்கப் படும் போது, அது பின்வரும் நிலைகளை கடந்து செல்கிறது:
onAttach()
onCreate()
onCreateView()
onActivityCreated()
கட்டம்2: பிரிப்பான் காட்சியாகதெரியும்போது பின்வரும் நிலைகளை கடந்து செல்கிறது:
onStart()
onResume()
கட்டம் III: இந்த பிரிப்பான் பின்புலமுறையில் செல்கின்றது போது, பின்வரும்
நிலைகளை கடந்து செல்கிறது:
onPaused()
onStop()

கட்டம் IV: பிரிப்பான் அழிக்கப்படும்போது ,அது பின்வரும் நிலைகளை கடந்து
செல்கிறது:
onPaused()
onStop()
onDestroyView()
onDestroy()
onDetach()


3
எவ்வாறு பிரிப்பான்களை பயன்படுத்தலாம்?
பிரிப்பான்களை உருவாக்குவதற்கு எண்ணற்ற எளிய வழிமுறைகளை பின்பற்றிடவேண்டும்.
அனைத்து செயல்களையும் செயற்படுத்திடுவதற்குமுன் நாம் எத்தனை பிரிப்பான்களை ஒரு செயல்பாட்டில் பயன்படுத்த வேண்டும் என்பதை முடிவுசெய்திடுக. இதற்கு உதாரணமாக நாம்படுக்கைவச உருவப்படம் , கிடைமட்ட உருவப்படம் ஆகிய இரு பிரிப்பான்களின் முறைகளை கொண்ட சாதனத்தினை கையாள விரும்புவதாக கொள்வோம்.
அடுத்த அவ்வாறான பிரிப்பான்களின் எண்ணிக்கை அடிப்படையில், இந்த பிரிப்பானின் இனத்தினை விரிபடுத்திடுகின்ற இனங்களை உருவாக்குக. இந்த பிரிப்பானின் இனமானது மேலே கூறிய மீளஅழைக்கும் செயலிகளை கொண்டதாகும் .அதனால் நம்முடைய தேவைகளின் அடிப்படையாக கொண்டு எந்த செயலியையும் மேலெழுதமுடியும்.
ஒவ்வொரு பிரிப்பானுக்கும் அதுதொடர்புடைய XML கோப்பில் நம்முடைய புறவமைப்பு கோப்புகளை உருவாக்க வேண்டும். இந்த கோப்புகளானது வரையறுக்கப்பட்ட, பிரிப்பான்களுக்கான புறவமைப்பாக அமைந்திருக்கும்.
இறுதியாக நம்முடைய தேவைக்கேற்ப பதிலான பிரிப்பான்களில் உண்மையான தருக்கத்தை வரையறுப்பதற்கான நடவடிக்கை கோப்பினை மாற்றியமைத்திடுக
இங்கு நம்முடைய பிரிப்பான்களின் இனத்தில் மேலெழுதிடும் முக்கியமான வழிமுறைகளின் பட்டியல் கொடுக்கப்பட்டுள்ளது:
onCreate () பிரிப்பான்களை உருவாக்கிடும்போது கணினியானது இந்த வழிமுறைக்கு அழைப்பு விடுக்கின்றது. பிரிப்பான்கள் இடைநிறுத்தப்பட்ட அல்லது நிறுத்தப்பட்ட பின்மீண்டும் மறுதுவக்கம் செய்திடும்போது அதனை தக்கவைத்துக் கொள்ள வேண்டுமா என்று பிரிப்பான் அடிப்படை கூறுகளை நாம் ஆரம்ப நிலையாக்க வேண்டும்,
onCreateView () முதன்முறையாக பிரிப்பானிற்கான பயனாளர் இடைமுகத்தை ஈர்க்க நேர்ந்திடும்போது கணினியானது இந்த மீளஅழைக்கும் வழிமுறையை அழைக்கின்றது
. நம்முடைய பிரிப்பானிற்காக ஒரு பயனாளர் இடைமுகத்தை ஈர்ப்பதற்கு, இந்த வழிமுறையில் ஒரு View எனும் ஆக்கக்கூறினை நாம் திருப்பிடவேண்டும் அதுவே நம்முடைய பிரிப்பானுடைய புறவஅமைப்பு மூல காரணமாக இருக்கின்றது, இந்தபிரிப்பானில் ஒரு பயனாளர் இடைமுகம் இல்லையெனில் நாம் இதனை பூஜ்ஜிய நிலைக்கு திருப்ப முடியும்
onPause () பயனாளர் பிரிப்பானை விட்டுசென்றிடும்போது அதன் முதல் அறிகுறியாக கணினியானது இந்த வழிமுறையை அழைக்கின்றது . நாம் தற்போதைய பயனாளர் அமர்விற்கு அப்பால் பிடிவாதமாகயிருந்திட வேண்டும் என்று எந்தவொரு மாற்றங்களை யும்அர்ப்பணித்துக் கொள்ள வேண்டும் என்பதே இதில் வழக்கமாக உள்ளது.
உதாரணமாக
இந்த உதாரணமானது நம்முடைய சொந்த பிரிப்பான்களை எவ்வாறு உருவாக்கலாம் என நமக்கு விளக்க மாக கூறுகின்றது. இங்கே நாம் படுக்கைவச உருவப்படத்தை பயன்படுத்திடும் சாதனத்திற்கான பிரிப்பான், நெடுக்கைவச உருவப்படத்தை பயன்படுத்திடும் சாதனத்திற்கான பிரிப்பான் ஆகிய இரண்டு வகை பிரிப்பான்களை உருவாக்க வேண்டும் . எனவே நாம் “அனைவருக்கும் வணக்கம்” எனும் எடுத்துகாட்டினை உருவாக்கிடும்போது பின்பற்றிய அதேவழிமுறைகளை பின்வருவதில் பின்பற்றிடுக:
2

பின்வரும் குறிமுறைவரிகளில் src/com.example.mycontentprovider / MainActivity.java எனும் கோப்பின் மாறுதல்கள் செய்யப்பட்ட முதன்முதலான செயல்பாடுகளின் உள்ளடக்கம் உள்ளது:
package com.example.myfragments;
import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.view.WindowManager;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Configuration config = getResources().getConfiguration();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
/**
* Check the device orientation and act accordingly
*/
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
/**
* Landscape mode of the device
*/
LM_Fragment ls_fragment = new LM_Fragment();
fragmentTransaction.replace(android.R.id.content, ls_fragment);
}
else{
/**
* Portrait mode of the device
*/
PM_Fragment pm_fragment = new PM_Fragment();
fragmentTransaction.replace(android.R.id.content, pm_fragment);
}
fragmentTransaction.commit();
}
}

LM_Fragement.java , PM_Fragment.java ஆகிய இருபிரிப்பான்களின் கோப்புகளை com.example.mycontentprovider எனும் தொகுப்பின்கீழ் உருவாக்கிடுக. பின்வருவது LM_Fragement.java எனும் கோப்பின் உள்ளடக்கமாகும்:

package com.example.myfragments;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class LM_Fragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
/**
* Inflate the layout for this fragment
*/
return inflater.inflate( R.layout.lm_fragment, container, false);
}
}

பின்வருவது PM_Fragement.java எனும் கோப்பின் உள்ளடக்கமாகும்:
package com.example.myfragments;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class PM_Fragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
/**
* Inflate the layout for this fragment
*/
return inflater.inflate( R.layout.pm_fragment, container, false);
}
}
lm_fragement.xml , pm_fragment.xml ஆகிய இருகோப்புகளைr res/layout எனும் கோப்பகத்தில் உருவாக்கிடுக. பின்வரும் குறிமுறைவரிகள் lm_fragement.xml எனும் கோப்பின் உள்ளடக்கமாகும்:

பின்வருபவை pm_fragment.xml எனும் கோப்பின் உள்ளடக்கமாகும்:

<!– More GUI components go here →

பின்வருமாறான res/layout/activity_main.xml எனும் கோப்பின்உள்ளடக்கங்களில் நம்முடைய பிரிப்பான்கள் உள்ளடங்கியுள்ளன:

பின்வருமாறானஉள்ளடக்கங்களை கொண்ட res/values/strings.xml எனும் கோப்பு நம்மிடம் உள்ளதை உறுதி படுத்தி கொள்க:

MyFragments
Settings
Hello world!
This is Landscape mode fragment

This is Portrait mode fragment

நாம் சற்றுமுன்பு நம்மால் நம்முடைய மாறுதல்கள் செய்யப்பட்ட MyFragments எனும் பயன்பாட்டினை இயக்க முயற்சி செய்வோம்! இந்த சூழல் அமைவை அமைவு செய்திடும்போது நம்முடைய AVD ஐ உருவாக்கிவிட்டோம் என கருதிகொள்க இந்தஎக்லிப்ஸில் இருந்து பயன்பாட்டை இயக்குவதற்கு நம்முடைய செயல்திட்டத்தின் செயல்பாட்டு கோப்புகளில் ஒன்றினை திறந்து கொள்க அதனை தொடர்ந்து கருவிகளின் பட்டையிலிருந்து Runஎனும் உருவப் பொத்தானை சொடுக்குக உடன் எக்லிப்ஸானது நம்முடைய AVD இல் நம்முடைய பயன்பாட்டை நிறுவுகை செய்திட துவங்கிடும் அதனை தொடர்ந்து நம்முடைய கட்டமைப்பு, பயன்பாடு ஆகிய அனைத்தும் நன்றாக உள்ளன என்றால், அது பின்வரும் முன்மாதிரி சாளரத்தினை திரையில் காண்பிக்கும்: அதில் பட்டியின் பொத்தானை சொடுக்குதல் செய்யமுடியும் அதுவரை காத்திருக்கவும் ஏனெனில் இந்த செயலானது நம்முடைய கணினியின் இயக்கவேகத்தை பொறுத்து உடனடியாகவோ அல்லது சிறிது கழித்தோ ஆகும்.

4

முன்மாதிரி சாளரத்திரையில் முறையை மாற்றுவதற்கு, பின்வருமாறு செய்திடுவோம்:
மேக் இயக்கமுறைமை கணினிஎனில் அகலவாக்கிலான உருவப்படத்திலிருந்து கிடைமட்ட உருவப்படமாக மாற்றி யமைத்திடுவதற்கு அதற்கு மாறாகவும் மாற்றியமைத்திடுவதற்கு . fn+ctrl+F11 என்றவாறும்
விண்டோ இயக்கமுறைமை கணினிஎனில்Ctrl + F11. என்றவாறும்
லினக்ஸ் இயக்கமுறைமை கணினிஎனில் Ctrl + F11.என்றவாறும் விசைகளை சேர்த்து அழுத்துக
நாம் இவ்வாறு ஒரு முறை மாற்றம் செய்துவிட்டால் அதன்பின்னர் நாம் கீழே உள்ளவாறு அகலவாக்கிலான செயல்படுத்தப்பட்ட வரைகலைபடத்தை காண முடியும்:

5

நாம் இதே வழியில் வெவ்வேறு பிரிப்பான்களின் மூலம் அதே செயல்பாடுகளை ஆனால் வெவ்வேறு வரைகலை பயனாளர் இடைமுகங்களை(GUI) பயன்படுத்த முடியும். நாம் நம்முடைய தேவைகளின்அடிப்படையில் வெவ்வேறு வரைகலை பயனாளர் இடைமுகங்களுக்காக(GUI) பல்வேறு வகையான வரைகலை இடைமுகப்பு கூறுகளை பயன்படுத்தி கொள்ள முடியும்

கிரேடில்(Gradle) எனும் திறமூல கருவியைகொண்டு மென்பொருள் உருவாக்கிடும் பணியை எளிதாக்கிகொள்க

கிரேடில் என்பது முன்கூட்டியே கட்டமைக்கப்பட்ட திறமூல அமைவாகும் இது நிரலாளர்களின்த மென்பொருள் உருவாக்கும் பணியை எளிதாக்குகின்றது இது தற்போது பெரும்பாலான ஆண்ட்ராய்டு மென்பொருள் உருவாக்குநர்களிடம் மிகப்பிரபலமாக விளங்குகின்றது இது குரூவி எனும் கணினிமொழியை அமைவு செய்வதற்காக உள்ளூர் குறிப்பிட்டமொழியை(Domain Specific Language) கட்டமைத்திட பயன்படுத்தி கொள்கின்றது இலக்கினை அடைவதற்காக நிர்ணயப்பதற்கு நேரடி சுழற்சியல்லாத வரைபடத்தினை(Direct Acyclic Graph) பயன்படுத்தி கொள்ளப்-படுகின்றது இந்த கருவியானது செல்லிடத்து பேசி பயன்பாடுகளிலிருந்து சிறியஅளவுசேவைநிறுவனங்கள் வரையிலும் அவ்வாறே சிறிய துவக்கநிறுவனத்திலிருந்து மிகப்பெரிய நிறுவனங்கள் வரையிலும் தங்களுடைய ஆண்ட்ராய்டு பயன்பாடுகளையும் செயல்திட்டங்களையும் உருவாக்கிடுவதற்கும் மேம்படுத்தி கொள்வதற்கும் பயன்படுத்தி கொள்ளப்படுகின்றது ஆண்ட்ராய்டு ஸ்டுடியோவில் வாடிக்கையாளர்விரும்பியவாறு கட்டமைவு செய்வதற்கான கருவியாக (apk)எனும் ஆண்ட்ராய்டு கட்டுகளின் கோப்புகளை உருவாக்கிடவும் நிருவகிக்கவும் இந்த கிரேடில் பேருதவியாக இருக்கின்றது தனித்தனிசெயல்களாலான பணியை ஒருங்கிணைத்த தனித்தனியான செயல்திட்டமாக ஒன்றும் அதற்குமேற்பட்ட செயல்திட்டங்களையும் கட்டமைவுசெய்வதற்கு இது உதவியாக இருக்கின்றது ஜாவா, சி++அல்லது நாம்விரும்பும் நம்முடைய மொழியில் ஆண்ட்ராய்டிற்கான பயன்பாடுகளை உருவாக்கிடஇந்த கிரேடில் மிகவும் பயன்படுகின்றது மேலும் விவரங்களுக்கு http://gradle.org/ எனும் இணைய பக்கத்திற்கு செல்க

லிபர் ஆஃபிஸ் பயன்பாட்டினை ஆண்ட்ராய்டு கைபேசியின்திரையில் காணமுடியும்

ஆண்ட்ராய்டு சாதனங்களில் லிபர் ஆஃபிஸ் பயன்பாட்டினை காட்சியாக காண முடியும் இதற்கான மென்பொருளை கூகுள் ப்ளே ஸ்டோரில் இருந்து பதிவிறக்கம் செய்து நம்முடைய திறன்பேசியில் நிறுவுகை செய்து பயன்படுத்தி காட்சியாக பார்வையிட முடியம் இவ்வாறு ஆண்ட்ராய்டு பயன்படுத்திடும் திறன்பேசியில் லிபர் ஆஃபிஸ் பயன்பாட்டினை காட்சியாக காண்பதற்கான வசதியை வழக்கமான மேஜைக்கணினியின் விண்டோ லினக்ஸ் மேக் ஆகிய இயக்கமுறைமைகளில் செயல்படும் இயந்திர அமைவையே இதற்கும் பயன்படுத்தி கொள்ளப்படுகின்றது மேஜைக்கணினியில் பார்வையிட்டு படிப்பதை போன்றே லிபர் ஆஃபிஸ் பயன்பாட்டினை ஆண்ட்ராய்டில் செயல்படும் ஃபயர்ஃபாக்ஸ் அடிப்படையில் செயல்படச்செய்யப்பட்டுள்ளது ஆண்ட்ராய்டில் லிபர் ஆஃபிஸ் பயன்பாடானது செயல்படுவதற்காக ஆண்ட்ராய்டு பதிப்பு 4உம்அதற்கு பிந்தைபதிப்பும் 50எம்பி ஏபிகே கோப்பு இந்த பயன்பாட்டினை நிறுவுகை செய்வதற்கான போதுமான காலி நினைவகம் ஆகியவை மட்டும் போதுமானவையாகும் தற்போது இதனுடைய பீட்டா பதிப்பு வெளியிடப்பட்டுள்ளது மேலும் விவரங்களுக்கு https://wiki.documentfoundation.org/Android எனும் இணைய பக்கத்திற்கு செல்க இவ்வாறு காட்சியாக திறன்பேசியில் லிபர் ஆஃபிஸ் பயன்பாட்டினை கண்டுவரும்போது தேவையான வாறு திருத்தம் செய்வதற்காக அடுத்தகட்ட செயல்பாட்டினைதற்போது துவக்கியுள்ளனர்

ஆண்ட்ராய்டில் நாம் விரும்பும் எந்தவொரு பயன்பாட்டினையும் நாமே உருவாக்கிகொள்ளலாம்

தற்போது வாடகை வண்டியை அமர்த்துவது, நம்முடைய வங்கிகணக்கினை கையாளுவது, குறிப்பிட்டநேரத்தில் நாம் மருந்துகளை பயன்படுத்துவதற்காக நமக்கு நினைவூட்டுவது போன்ற எந்தவொரு நிகழ்விற்கும் ஆண்ட்ராய்டு பயன்பாட்டினால் செயல்படுத்திடமுடியும் என்ற புதிய சூழலில் நாமெல்லோரும் வாழ்ந்துவருவது அனைவருக்கும் தெரிந்த செய்தியேயாகும் இவ்வாறான ஆண்ட்ராய்டு பயன்பாடுகளை Android Studio and Java ,Appcelerator Titanium ,Lua ,PhoneGap ,Rhomobile Suite and the Rhodes Framework ஆகிய ஐந்தில் ஏதாவது ஒன்றின் உதவியால் நாம் விரும்பும் நமக்கு தேவையான ஆணட்ராய்டு பயன்பாடு ஒன்றினை மிகஎளிதாக உருவாக்கி கொள்ளமுடியும் இவற்றில் மிகப்பிரபலமானதும் அனைவராலும் பயன்படுத்தி கொண்டிருப்பதும் Android Studio எனும் கருவியாகும் இது கூகுளிலிருந்து ஒருங்கிணைந்த மேம்படுத்தும் சூழலை(Integrated Development Environment (IDE)) வழங்குகின்றதுஇந்த Android Studioஐ அறிந்துகொள்வதற்கு அடிப்படையாக ஜாவா தொழில்நுட்பமும் எக்செல்எம்மொழியையும் ஓரளவு அறிந்திருந்தால் எளிதாக இருக்கும் இந்த Android Studio ஆனது கட்டணமற்றது கற்க எளிதானது இதனை பற்றி அறிந்துகொள்ளவும் தெளிந்து கற்றுகொள்ளவும் இணையத்தில் ஏராளமான பயிற்சி வகுப்புகளும் கட்டுரைகளும் உள்ளன இந்த Android Studio இன் ஒருங்கிணைந்த மேம்படுத்திடும் சூழலானது அவ்வப்போது நிகழ்நிலைபடுத்தபட்டுகொண்டேஉள்ளது இந்த Android Studioவில் புதிய ஆண்ட்ராய்டு பயன்பாட்டினை உருவாக்கிடுவதற்காக Activity ,Emulator:ஆகிய இரு சொற்களே அடிப்படையாக அமைகின்றது இதன்முதல் படிமுறையாக https://developer.android.com/studio/index.html என்ற தளத்திலிருந்து Android Studio என்பதையும் http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html என்ற தளத்திலிருந்து Java Development Kit (JDK)என்பதையும் பதிவிறக்கம் செய்து நம்முடைய 4 ஜிபி ரேம், 2 ஜிபி வன்தட்டு காலிநினைவகம், 2.5கிலோஹெர்ட்ஸ் வேகம் கொண்ட செயலி, ஆகிய அடிப்படை வசதியுடை கணினியில் நிறுவுகை செய்து கொள்க
இதன்பின்னர் Android Studio ஐ செயல்படுத்தி திரையில் தோன்றிடசெய்திடுக அதனை தொடர்ந்து இந்த திரையின் கீழே வலதுபுறமுள்ள Events எனும் உருவபொத்தானை தெரிவுசெய்து சொடுக்குதல் செய்து நிகழ்நிலை படுத்திகொள்க பின்னர்Configure எனும் உருவப் பொத்தானை தெரிவுசெய்து சொடுக்குதல் செய்து அடிப்படையை அனுகிடும் வசதியை ஏற்படுத்தி கொள்க அதன்பின்னர்Start என்பதற்கு அருகிலுள்ள பற்சக்கரம் போன்ற உருவபொத்தானை தெரிவுசெய்து சொடுக்குக உடன் விரியும் புதிய பயன்பாட்டு செயல்திட்டத்திற்கான திரையில் இந்த பயன்பாட்டிற்கான பெயரை பெரியஎழுத்துகளில் மட்டும் துவங்கி உள்ளீடுசெய்துகொண்டு நாம்விரும்பும் கோப்பகத்தில் சேமித்துகொண்டு next எனும் பொத்தானை தெரிவுசெய்து சொடுக்குதல் செய்து சிறிதுநேரம் காத்திருக்கவும் பின்னர் தோன்றிடும் திரையில் basic activity, google maps activity, or a login activity.போன்றவைகளில் நாம் செய்யவேண்டிய செயல்களை( Activityஐ) மட்டும் தெரிவுசெய்து கொண்டு அதற்கு பெயரிட்டு கொண்டு Finishஎன்ற பொத்தானை சொடுக்குக அவ்வளவுதான் சாதாரண ஆண்டராய்டு பயன்பாடானது நாம் பயன்படுத்தி கொள்ள தயாராகிவிடும்

புதியவர்களுக்கு ஆண்ட்ராய்டு பயிற்சிகையேடு பகுதி-10 உள்ளடக்க வழங்குநர்கள்

ஒரு உள்ளடக்க வழங்குநரின் ஆக்கக்கூறானது தரவுகளை கோரிக்கையின் மீது மற்றவர்களுக்கு ஒரு பயன்பாட்டிலிருந்து விநியோகம் செய்கின்றது அவ்வாறான கோரிக்கைகள் Content Resolve எனும் இனத்தின்மீதுள்ள வழிமுறைகளால் கையாளப்படுகின்றன. ஒரு உள்ளடக்க வழங்குநரை அதனுடைய தரவை சேமிப்பதற்கு பல்வேறு வழிகளில் பயன்படுத்த முடியும். அதனை தொடர்ந்து தரவுதளத்தில், கோப்புகளில் அல்லது ஒரு பிணையத்தில்வழியாக, தகவலை சேமிக்க முடியும்.
ஒரு பயன்பாட்டின் தரவை மற்றொரு பயன்பாட்டிலிருந்து மறைத்து கொண்டு ஒவ்வொரு ஆண்ட்ராய்டு பயன்பாடும் அதன் சொந்த அனுமதிகளுடன் அதன் சொந்த செயல்முறையில் இயங்கும். ஆனால் சில நேரங்களில் பயன்பாடுகள் முழுவதுமான தரவை பகிர்ந்து கொள்ள வேண்டிய தேவையுள்ளது. இதுவே உள்ளடக்க வழங்குநர்கள் மிகவும் பயன்மிகுந்த பகுதியாகும். இந்தஉள்ளடக்க வழங்குநர்கள் நாம் ஒரே இடத்தில் உள்ளடக்கத்தை மையப்படுத்த அனுமதிக்கின்றது அதனை தொடர்ந்து தேவைப்படும்போது பல்வேறு பயன்பாடுகளும் அம்மையத்தை அணுகஅனுமதிக்கின்றது.. ஒரு உள்ளடக்க வழங்குநர் ஒரு தரவுதளத்தினை போன்றே செயல்படுகின்றது. அதனால் நாம் அதனிடம் வினா எழுப்பமுடியும், அதனுடைய உள்ளடக்கத்தை திருத்தம் செய்திடமுடியும், அதுமட்டுமின்றி உள்ளிணைத்தல் () நிகழ்நிலை படுத்துதல் (), நீக்கம்செய்தல் (), வினா எழுப்புதல் () ஆகிய வழிமுறைகளை பயன்படுத்தி அதனுடைய உள்ளடக்கங்களை சேர்த்திடவோ அல்லது நீக்கம் செய்திடவோ செய்யலாம் பெரும்பாலான நிகழ்வுகளில் இந்த தரவுகள் ஒரு Sqlite எனும் தரவுதளத்தினை போன்று சேமிக்கின்றது
. ஒரு உள்ளடக்க வழங்குநர் Content Provider எனும் இனத்தின் ஒரு துணை இனமாக செயல்படுத்தப்படுகிறது மேலும் பிற பயன்பாடுகளானது நடவடிக்கைகளை செயற்படுத்துவதற்கு இயலுமை செய்வதற்கு என்று தொகுதியான செந்தர API கள் செயல்படுத்த வேண்டும்
public class MyContentProvider extends ContentProvider {
}
உள்ளடக்க முகவரிகள்
ஒரு உள்ளடக்க வழங்குநரின் வினாவிற்கு, நாம் ஒரு URI வடிவில் கேள்வி சரத்தை குறிப்பிடவேண்டும் அது பின்வரும் வடிவமைப்பினை கொண்டதாகும்
:////
இந்த URI இன் பல்வேறு பகுதிகளின் விவரங்கள் பின்வருமாறு:

அடுத்து நாம் குறிப்பிட்ட தரவுதள நடவடிக்கைகளை செயற்படுத்துவதற்கு உள்ளடக்க வழங்குநர் வினாக்களுக்கு செயல்படுத்த வேண்டும்.
இறுதியாக எனும் குறிச்சொல்லை பயன்படுத்தி நம்முடைய செயல்பாட்டு கோப்பில் நம்முடைய உள்ளடக்க வழங்குநரை பதிவு செய்திடுக.
நம்முடைய உள்ளடக்க வழங்குநர் செயல்படுவதற்கு உள்ளடக்க வழங்குநரின் இனத்தில் மேலெழுதுவதற்கு தேவையானவழிமுறைகளின் பட்டியல் பின்வருமாறு
onCreate () வழங்குநரின் பணி தொடங்கிடும்போது இந்த வழிமுறை அழைக்கப்படுகிறது:
query()இந்த வழிமுறையானது ஒரு வாடிக்கையாளரிடமிருந்து ஒரு கோரிக்கை பெறுவதாகும் இதன்விளைவாக ஒரு சுட்டியின் பொருளாக திருப்பப்படுகின்றது
insert() உள்ளடக்க வழங்குநருக்குள் புதிய ஆவணத்தை உள்ளிணப்பு செய்வதற்கு இந்த வழிமுறை பயன்படுகின்றது
delete()உள்ளடக்க வழங்குநரிடம் நடப்பில் உள்ள ஒரு ஆவணத்தை நீக்கம் செய்திட இந்த வழிமுறை பயன்படுகின்றது
update() இந்தவழிமுறையானது உள்ளடக்க வழங்குநரிடம் நடப்பில் இருக்கும் ஒரு ஆவணத்தை மேம்படுத்துகிறது.
gettype () இந்த வழிமுறையானதுகொடுக்கப்பட்ட URI இல் உள்ள IME வகை தரவினை திருப்பி வழங்குகிறது.
உதாரணம்
இந்த உதாரணமானது எவ்வாறு நம்முடைய சொந்த உள்ளடக்க வழங்குநரை உருவாக்குவது என நமக்கு விளக்கமளிக்கின்றது. எனவே நாம் “அனைவருக்கும் வணக்கம்” எனும் எடுத்துக்காட்டினை உருவாக்கும் போது பின்பற்றிய அதே பின்வரும் படிமுறைகளை இதற்கும் பின்பற்றிட வேண்டும்:

தொடர்ந்து மாற்றப்பட்ட முக்கிய செயல்பாடுடன்கூடிய filesrc / com.example.mycontentprovider / MainActivity.java எனும் கோப்பின் மாறுதல்கள் செய்த முதன்மை செயலின் உள்ளடக்கம் பின்வருவதில் உள்ளது. இந்தக் கோப்பில் அடிப்படை வாழ்க்கை சுழற்சி முறைகள் ஒவ்வொன்றையும் சேர்க்க முடியும். நாம் இந்த பயன்பாட்டுடன் பயனாளர் தொடர்புகளை கையாளுவதற்கு onClickAddName () onClickRetrieveStudents ().ஆகிய இரு புதிய வழிமுறைகளை சேர்க்க வேண்டும்

package com.example.mycontentprovider
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.CursorLoader;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClickAddName(View view) {
// Add a new student record
ContentValues values = new ContentValues();
values.put(StudentsProvider.NAME,
((EditText)findViewById(R.id.txtName)).getText().toString());
values.put(StudentsProvider.GRADE,
((EditText)findViewById(R.id.txtGrade)).getText().toString());
Uri uri = getContentResolver().insert(
StudentsProvider.CONTENT_URI, values);
Toast.makeText(getBaseContext(),
uri.toString(), Toast.LENGTH_LONG).show();
}
public void onClickRetrieveStudents(View view) {
// Retrieve student records
String URL = “content://com.example.provider.College/students”;
Uri students = Uri.parse(URL);
Cursor c = managedQuery(students, null, null, null, “name”);
if (c.moveToFirst()) {
do{ Toast.makeText(this, c.getString(c.getColumnIndex(StudentsProvider._ID)) +
“, ” + c.getString(c.getColumnIndex( StudentsProvider.NAME)) +
“, ” + c.getString(c.getColumnIndex( StudentsProvider.GRADE)),
Toast.LENGTH_SHORT).show();
} while (c.moveToNext());
}
}
}
com.example.mycontentprovider package என்பதன்கீழ் StudentsProvider.java எனும் புதிய கோப்பினை உருவாக்குக. அதனை தொடர்ந்து பின்வருவது src/com.example.mycontentprovider/StudentsProvider.java: என்பதனுடைய உள்ளடக்கமாகும்

package com.example.mycontentprovider;
import java.util.HashMap;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.text.TextUtils;
public class StudentsProvider extends ContentProvider {
static final String PROVIDER_NAME = “com.example.provider.College”;
static final String URL = “content://” + PROVIDER_NAME + “/students”;
static final Uri CONTENT_URI = Uri.parse(URL);
static final String _ID = “_id”;
static final String NAME = “name”;
static final String GRADE = “grade”;
private static HashMap STUDENTS_PROJECTION_MAP;
static final int STUDENTS = 1;
static final int STUDENT_ID = 2;
static final UriMatcher uriMatcher;
static{
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, “students”, STUDENTS);
uriMatcher.addURI(PROVIDER_NAME, “students/#”, STUDENT_ID);
}
/** * Database specific constant declarations
*/
private SQLiteDatabase db;
static final String DATABASE_NAME = “College”;
static final String STUDENTS_TABLE_NAME = “students”;
static final int DATABASE_VERSION = 1;
static final String CREATE_DB_TABLE =
” CREATE TABLE ” + STUDENTS_TABLE_NAME +
” (_id INTEGER PRIMARY KEY AUTOINCREMENT,
” + ” name TEXT NOT NULL,
” + ” grade TEXT NOT NULL);”;
/**
* Helper class that actually creates and manages
* the provider’s underlying data repository.
*/
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(CREATE_DB_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS ” + STUDENTS_TABLE_NAME); onCreate(db);
}
}
@Override
public boolean onCreate() {
Context context = getContext();
DatabaseHelper dbHelper = new DatabaseHelper(context);
/**
* Create a write able database which will trigger its
* creation if it doesn’t already exist.
*/
db = dbHelper.getWritableDatabase();
return (db == null)? false:true;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
/**
* Add a new student record
*/
long rowID = db.insert( STUDENTS_TABLE_NAME, “”, values);
/**
* If record is added successfully
*/
if (rowID > 0) {
Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID); getContext().getContentResolver().notifyChange(_uri, null);
return _uri;
}
throw new SQLException(“Failed to add a record into ” + uri);
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.setTables(STUDENTS_TABLE_NAME);
switch (uriMatcher.match(uri)) {
case STUDENTS:
qb.setProjectionMap(STUDENTS_PROJECTION_MAP);
break;
case STUDENT_ID: qb.appendWhere( _ID + “=” + uri.getPathSegments().get(1));
break;
default:
throw new IllegalArgumentException(“Unknown URI ” + uri);
}
if (sortOrder == null || sortOrder == “”){
/**
* By default sort on student names
*/
sortOrder = NAME;
}
Cursor c = qb.query(db, projection, selection, selectionArgs,
null, null, sortOrder);
/**
* register to watch a content URI for changes
*/
c.setNotificationUri(getContext().getContentResolver(), uri);
return c;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = 0;
switch (uriMatcher.match(uri)){
case STUDENTS:
count = db.delete(STUDENTS_TABLE_NAME, selection, selectionArgs);
break;
case STUDENT_ID: S
tring id = uri.getPathSegments().get(1);
count = db.delete( STUDENTS_TABLE_NAME, _ID + ” = ” + id
+ (!TextUtils.isEmpty(selection) ? ” AND (” +
selection + ‘)’ : “”), selectionArgs);
break;
default:
throw new IllegalArgumentException(“Unknown URI ” + uri);
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
int count = 0;
switch (uriMatcher.match(uri)){
case STUDENTS:
count = db.update(STUDENTS_TABLE_NAME, values,
selection, selectionArgs);
break;
case STUDENT_ID:
count = db.update(STUDENTS_TABLE_NAME, values, _ID +
” = ” + uri.getPathSegments().get(1) +
(!TextUtils.isEmpty(selection) ? ” AND (” +
selection + ‘)’ : “”), selectionArgs);
break;
default:
throw new IllegalArgumentException(“Unknown URI ” + uri );
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public String getType(Uri uri) {
switch (uriMatcher.match(uri)){
/**
* Get all student records
*/
case STUDENTS:
return “vnd.android.cursor.dir/vnd.example.students”;
/**
* Get a particular student
*/
case STUDENT_ID:
return “vnd.android.cursor.item/vnd.example.students”;
default:
throw new IllegalArgumentException(“Unsupported URI: ” + uri);
}
}
}
பின்வருவது AndroidManifest.xml எனும் கோப்பின் மாறுதல் செய்யப்பட்ட உள்ளடக்கத்தை கொண்டதாகும் . இதில் நம்முடைய உள்ளடக்க வழங்குநரின் உள்ளடங்கியதற்கு எனும் குறிச்சொல்லினை சேர்த்து உள்ளோம்:

பின்வருவதில் நம்முடைய வாடிக்கையாளரின் நோக்க ஒலிபரப்பிற்கு ஒரு பொத்தானை உள்ளடங்கியுள்ளதற்காக res/layout/activity_main.xml எனும்கோப்பில் உள்ளடக்கங்கள் கொடுக்கப்பட்டுள்ளன

பின்வரும் உள்ளடக்கங்களானது res/values/strings.xml எனும் கோப்பில் இருப்பதை உறுதிசெய்துகொள்க

MyContentProvider
Settings
அனைவருக்கும் வணக்கம்!
;
நாம் சற்றுமுன்பு நம்மால் மாறுதல்கள் செய்யப்பட்ட MyContentProvider எனும் பயன்பாட்டினை இயக்க முயற்சி செய்வோம்! சூழல் அமைவை அமைவு செய்திடும்போது நம்முடைய AVD ஐ உருவாக்கிவிட்டோம் என கருதிகொள்க இந்தஎக்லிப்ஸில் இருந்து பயன்பாட்டை இயக்குவதற்கு நம்முடைய செயல்திட்டத்தின் செயல்பாட்டு கோப்புகளில் ஒன்றினை திறந்து கொள்க அதனை தொடர்ந்து கருவிகளின் பட்டையிலிருந்து Runஎனும் உருவப் பொத்தானை தெரிவு செய்து சொடுக்குக உடன் எக்லிப்ஸானது நம்முடைய AVD இல் நம்முடைய பயன்பாட்டை நிறுவுகை செய்திடத் துவங்கிடும் அதனை தொடர்ந்து நம்முடைய கட்டமைப்பு , பயன்பாடு ஆகிய அனைத்தும் நன்றாக உள்ளன என்றால், அது பின்வரும் முன்மாதிரி சாளரத்தினை திரையில் காண்பிக்கும்: அதுவரை காத்திருக்கவும் ஏனெனில் இந்த செயலானது நம்முடைய கணினியின் இயக்கவேகத்தை பொறுத்து உடனடியாகவோ அல்லது சிறிது கழித்தோ ஆகும்.
3

இப்போது Nameஎன்பதில் மாணவர் பெயரையும் , Grade என்பதில் நுழைவு தகுதியையும் உள்ளீடுசெய்து கொண்டு இறுதியாக Add Name எனும்பொத்தானை சொடுக்குக , இவ்வாறு செய்தவுடன் மாணவரின் ஆவணமானது தரவுத்தளத்தில் சேர்க்கப்பட்டுவிடும் அதனை தொடர்ந்து தரவுதளத்தில் சேர்க்கப்பட்ட பதிவு எண்ணுடன் சேர்த்து ContentProvider: URI என்பது திரையின் கீழே ஒரு செய்தியாக ஒளிருமாறு காண்பிக்கப்படுகின்றது . இந்த செயலானது நம்முடைய insert()எனும் வழிமுறையை பயன்படுத்திகொள்ளச் செய்கிறது. நம்முடைய உள்ளடக்க வழங்குநரின் தரவுத்தளத்தில் மேலும் சில மாணவர்களின் ஆவணங்களை சேர்த்திடுவதற்காக இந்த செயல்முறையை மீண்டும் செயற்படுத்திடுக.
4

இவ்வாறு தரவுத்தளத்தில் பதிவுகளை சேர்த்து முடித்தவுடன், இப்போது இந்த உள்ளடக்க வழங்குநரை இவ்வாறு சேர்த்த ஆவணங்களை திரும்ப வழங்கிடுக என கேட்கலாம், எனவே Retrieve Studentsஎனும் பொத்தானை சொடுக்குக உடன் query()எனும் வழிமுறையை செயற்படுத்தியவுடன் ஒவ்வொரு ஆவணமாக வழங்குவதை போன்று இந்த வழிமுறையிலும் அனைத்து ஆவணங்களையும் ஒவ்வொன்றாக திரையில் காண்பிக்கும்
5

நாம்MainActivity.java எனும் கோப்பில் மேம்படுத்தலுக்கு எதிரான நடவடிக்கைகளை எழுதவும் , மீண்டும் அழைக்கும் செயலியை வழங்குவதால் செயல்பாட்டினை நீக்கவும் முடியும் அதன்பின்னர் செயல்பாடுகளை சேர்த்திடவும் படித்திடவும் ஆன அதே வழியில் உள்ள மேம்படுத்தலுக்கான பொத்தான்களையும் நீக்கப்பட்ட நடவடிக்கைகளையும் திரும்பவும் வேண்டுமென பயனாளர் இடைமுகம் செய்து மாற்றிட முடியும்.
இந்த வழியில் நாம் முகவரி புத்தகம் போன்று தற்போதுள்ள உள்ளடக்க வழங்குநரை பயன்படுத்த அல்லது உள்ளடக்க வழங்குநர் கருத்தினை பயன்படுத்தி அருமையான தரவுதளம் சார்ந்த பயன்பாட்டினை உருவாக்கிட முடியும் அதனை கொண்டு படிக்க, எழுத நிகழ்நிலை படுத்த,நீக்கம் செய்திட என்பன போன்ற அனைத்து தகவல் நடவடிக்கைகளை மேலேகூறிய உதாரணத்தில் விவரித்தவாறு அனைத்து வகையிலும் செயற்படுத்திட முடியும்

ஆண்ட்ராய்டில் Gradleஎனும் கருவியை பயன்படுத்தி பயன்பாடுகளை எளிதாக உருவாக்கிகொள்க

Gradleஎனும் கருவியானது ஆண்ட்ராய்டு பயன்பாடுகளை உருவாக்குபவர்களிடம் மிகப்பிரபலமானதாகும் இதனை தகவமைவு செய்வதற்காக Groovyஎனும் மொழியில் ஆண்ட்ராய்டு பயன்பாடுகளை தயார்நிலை யில் வைத்துள்ள (DSL(Domain Specific Language)) என்பதை பயன்படுத்தி கொள்கின்றது இது ஒரு புதிய செயல்திட்டத்தின் நிரல் தொடரில் ஏற்படும் பிழையை சரிசெய்வதற்காக முதன்மை கோப்பகத்தில் உள்ள debugஎனும் கோப்பகத்தின் classஎனும் கோப்பினை பயன்படுத்திகொள்கின்றது Application Classஇற்கு Appcontroller classஎனும் வழிமுறைகளை பயன்படுத்தி கொள்கின்றது flavour-specific class logicஇற்கு flavournameஎன்பதை பயன்படுத்தி கொள்கின்றது இது சாதாரண செல்லிடத்து பேசி பயன்பாடுமுதல் பேரளவு சேவையாளர் பயன்பாடுவரை துவக்கநிலை பயன்பாடுமுதல் பெரியநிறுவனங்களின் செயல்திட்டங்கள் வரை அனைத்தையும் முன்கூட்டியே கட்டமைக்கப்பட்டு தயார்நிலையில் உள்ளவைகளை தானியங்கியாக செயல்படுபவைகளை மட்டும் நம்முடைய தேவைக்கேற்ப மிகச்சரியாக பயன்படுத்தி நமக்கான மிகச்சிறந்த பயன்பாட்டு மென்பொருளை உருவாக்கி கொள்ளமுடியும் வாருங்கள் வந்து இன்றே இதனை நம்முடைய தேவைக்கேற்ப பயன்படுத்தி கொள்க

புதியவர்களுக்குஆண்ட்ராய்டு- பயிற்சிகையேடு பகுதி-9 ஒலிபரப்பு பெறுபவைகள்-

மற்ற பயன்பாடுகளிலிருந்து அல்லது கணினியின் அமைவுக்குள்ளிருந்து செய்திகள் ஒலிப்பரப்புவதற்கு பதில் செயல் உருவாவதையே சாதாரணமாக ஒலிபரப்பு பெறுதல் என அழைப்புர் இந்த செய்திகளை சிலசமயம் நிகழ்வுகள் அல்லது நோக்கங்கள்(intents) என்றும் அழைப்பார்கள். உதாரணமாக அவைகளுக்காக பயன்படுத்துவதற்கு தயாராக இருக்கும் அந்த சாதனத்திற்கு ஒரு சில தரவுகள் பதிவிறக்கம் செய்திடவேண்டும் என்று மற்ற பயன்பாடுகளை தெரிந்து கொள்வதற்கு பயன்பாடுகளானது ஒலிபரப்பினை துவக்கிடமுடியும் கணினியின் அமைவிற்காக ஒலிபரப்பு செய்திடும் நோக்கத்தில் ஒலிபரப்பு பெறும் செயலை செயல்படுத்துவதில் 1.ஒலிபரப்பு பெறுபவரை உருவாக்குதல் 2.ஒளிபரப்பு பெறுபவரை பதிவுசெய்தல் ஆகிய இருமுக்கிய படிமுறைகள் உள்ளன
அதுமட்டுமல்லாது மேலும் ஒரு கூடுதலான படிமுறையும் உள்ளது வாடிக்கையாளர் விருமபியவாறான நோக்கத்தை செயல்படுத்துவதற்கு முனைந்தால் உடன் நாம் அந்த நேக்கத்தை உருவாக்குவதற்கும் ஒலிபரப்புவதற்கும் அடையமுடியும்
1ஒளிபரப்பு பெறுபவரை உருவாக்குதல்
BroadcastReceiverஎனும் இனத்தில் ஒரு துனை இனமாக ஒரு BroadcastReceiverஐ செயற்படுத்திடலாம் அதனை தொடர்ந்து ஒரு நோக்கத்தின்(Intent) அளவுகோலாக ஒவ்வொரு செய்தியாக பெறப்படும்இடத்தில் onReceive() எனும் வழிமுறை வழிந்தோடும்
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, “Intent Detected.”,
Toast.LENGTH_LONG).show();
}
}
2ஒளிபரப்பு பெறுபவரை பதிவுசெய்தல்
AndroidManifest.xml எனும் கோப்பில் ஒரு ஒலிபரப்பு பெறுபவரை பதிவு-செய்வதன் மூலம் குறிப்பிட்ட ஒலிபரப்பு நோக்கங்களுக்காக ஒரு பயன்பாடு கவணித்தல் செய்கின்றது.
நாம் ACTION_BOOT_COMPLETED எனும் கணினி உருவாக்கிடும் நிகழ்விற்காக MyReceiver என்பதை பதவுசெய்வதற்கு முயலுவதாக கருதிடுவோம் இங்கு ஆண்ட்ராய்டு அமைவானது துவக்க செயல் முடித்துவிட்டதெனில் கணினியால் ACTION_BOOT_COMPLETED என்பது செயல்படுத்தபடும்

எப்போதெல்லாம் நம்முடைய ஆண்ட்ராய்டு சாதனம் துவங்குகின்றதோ அப்போதெல்லாம் MyReceiver என்பது இடைமறித்திடும் அதனைதொடர்ந்து onReceive()என்பதை செயல்படுத்திடும் மேலும் செயல்படுத்தப்பட்டது(implimented) என்பதை தருக்க உள்பகுதியில் செயல்படுத்திடும்
2.1

வாடிக்கையாளர் விரும்பியவாறு ஒளிபரப்புசெய்தல்
நாம் நம்முடைய பயன்பாடானது தானாகவே வாடிக்கையாளர் விரும்பும் நோக்கத்தை உருவாக்கிடவும் அனுப்பிடவும் விரும்பினால் அதன்பின்னர் நம்முடைய செயல் இனத்திற்குள் sendBroadcast() எனும் வழிமுறையை பயன்படுத்துவதன்மூலம் அந்த நோக்கங்களை உருவாக்கிடவும் அனுப்புவும் செய்திடவேண்டும். நாம் sendStickyBroadcast(Intent)எனும் வழிமுறையை பயன்படுத்தினால் அந்த நோக்கம் ஒட்டியதாக இருக்கும் ஒலிபரப்பு முடிந்த பின்னரும் அதனைசுற்றி அப்படியே நாம் அனுப்பிய நோக்கம் இருக்கும் என்பதே இதன் அர்த்தமாகும்
public void broadcastIntent(View view)
{
Intent intent = new Intent();
intent.setAction(“com.tutorialspoint.CUSTOM_INTENT”);
sendBroadcast(intent);
}
கணினி உருவாக்கிய நோக்கத்தை போன்ற வழியில்இந்த com.tutorialspoint.CUSTOM_INTENT எனும் நோக்கத்தையும் பதிவுசெய்திடவேண்டும்

உதாரணமாக வாடிக்கையாளரின் நோக்கத்தினை இடைமறிப்பதற்கு BroadcastReceiver எவ்வாறு உருவாக்குவது என இந்த எடுத்துகாட்டு விளக்கமாக கூறுகின்றது இந்த வாடிக்கையாளரின் நோக்கத்தில் நன்கு தெளிவடைந்துவிட்டால் அதன்பின்னர் கணினி உருவாக்கிடும் நோக்கத்தின் இடைமறிப்பதற்கு நம்முடைய பயன்-பாட்டினை எழுதமுடியும் அதனால் நம்முடைய “அனைவருக்கம் வணக்கம்” எனும் பயிற்சி கையேட்டு பகுதியில்கூறியவாறு நாம் உருவாக்கிய ஆண்ட்ராய்டு பயன்பாட்டினை மாறுதல் செய்வதற்கு பின்வரும் வழிமுறைகளை பின்பற்றிடுக
2.2
பின்வருவது src/com.example.helloworld/MainActivity.java எனும் கோப்பின் மாறுதல் செய்த முதன்மை செயல்உள்ளடக்கங்களாகும் இந்த கோப்பில் ஒவ்வொரு அடிப்படையான வாழ்க்கைசுழல்செயல் உள்ளடங்கியதாகும் இதில் வாடிக்கையாளர் நோக்கத்தினை ஒலிபரப்புவதற்கு broadcastIntent()எனும் வழிமுறையை சேர்த்துள்ளோம்
package com.example.அனைவருக்கும் வணக்கம்;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.content.Intent;
import android.view.View;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
// broadcast a custom intent.
public void broadcastIntent(View view)
{
Intent intent = new Intent(); intent.
setAction(“com.tutorialspoint.CUSTOM_INTENT”);
sendBroadcast(intent);
}
}
பின்வருவது src/com.example.அனைவருக்கும் வணக்கம்/MyReceiver.javaஎன்பதன் உள்ளடக்கமாகும்
package com.example.helloworld;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, “Intent Detected.”,
Toast.LENGTH_LONG).show();
}
}
பின்வருவது AndroidManifest.xmlஎனும் கோப்பின் உள்ளடக்கங்கள் மாறுதல்கள் செய்யப்பட்டதாகும் இங்கு நாம் நம்முடைய சேவையில் உள்ளடங்கிஇருப்பதற்கு எனும் குறிச்சொல்லை சேர்த்துள்ளோம்

பின்வருவது நம்முடைய வாடிக்கையாளர் நோக்கம் ஒலிபரப்புவதற்கு ஒரு பொத்தான் உள்ளடக்கமாக செய்வதற்கு res/layout/activity_main.xmஎனும் கோப்பின் உள்ளடக்கமாகும்

பின்வருவதுஇரு புதிய மாறிலியை வரையறுப்பதற்கு res/values/strings.xml என்பதன் உள்ளடக்கமாகும்

அனைவருக்கும் வணக்கம்
அனைவருக்கும் வணக்கம்!
Settings
MainActivity
Broadcast Intent

நாம் சற்றுமுன்பு நம்மால் நம்முடைய மாறுதல்கள் செய்யப்பட்ட “அனைருக்கும் வணக்கம்” எனும் பயன்பாட்டினை இயக்க முயற்சி செய்வோம்.அதற்காக முதலில் சூழல் அமைவை அமைவு செய்திடும்போது நம்முடைய AVD ஐ உருவாக்கிவிட்டோம் என கருதிகொள்க இந்தஎக்லிப்ஸில் இருந்து பயன்பாட்டை இயக்குவதற்கு நம்முடைய செயல்திட்டத்தின் செயல்பாட்டு கோப்புகளில் ஒன்றினை திறந்து கொள்க அதனை தொடர்ந்து கருவிகளின் பட்டையிலிருந்து Runஎனும் உருவப் பொத்தானை தெரிவு செய்து சொடுக்குக உடன் எக்லிப்ஸானது நம்முடைய AVD இல் நம்முடைய பயன்பாட்டை நிறுவுகை செய்திடத் துவங்கிடும் அதனை தொடர்ந்து நம்முடைய கட்டமைப்பு, பயன்பாடு ஆகிய அனைத்தும் நன்றாக உள்ளன என்றால், அது பின்வரும் முன்மாதிரி சாளரத்தினை திரையில் காண்பிக்கும்:
2.3
நம்முடையவிருப்ப நோக்கம் ஒளிபரப்புசெய்வதற்கு இப்போது Broadcast Intentஎனும் பொத்தானை சொடுக்குதல் செய்க இது நம்முடைய விருப்ப நோக்கமான “com.tutorialspoint.CUSTOM_INTENT” என்பதை ஒளிபரப்பு செய்கின்றது இது நம்முடைய BroadcastReceiver எனும் பதிவை இடைமறித்திடுகின்றது. MyReceiver உம் நம்முடைய செயல்படுத்தப்படும் தருக்கமும் ஒன்றுக்கு ஒரு toast முன்மாதிரி பின்வருமாறு திரையில் தோன்றிடும்:
2.4

நாம் கணினியின் செயலை இடைமறிக்க மற்ற BroadcastReceiver செயல்படுத்தி உருவாக்கப்படும் கணினியை துவக்குதல், தேதியைமாற்றுதல் மின்கலனில் குறைந்த மின்சாரம் இருப்பதை சுட்டிகாட்டுதல் போன்ற நாம் விரும்பிய அறிவிப்புகளை செய்திடுமாறுமுயற்சி செய்யலாம்

Previous Older Entries