PhoneGap рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╛рд╕

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореЛрдмрд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдЕрдиреБрдЪреНрдЫреЗрдж рдореЗрдВ, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЙрдкрдХрд░рдг рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ - рдлреЛрдирдЧреИрдкред рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реБрд▓реНрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдврд╛рдВрдЪрд╛ рд╣реИред

PhoneGap рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ iOS, Android, Windows Phone, BlackBerry, Bada, рд╕рд┐рдореНрдмрд┐рдпрди, рд╡реЗрдмрдУрдПрд╕ HTML рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╣реА 1 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ 400,000 рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реИред



PhoneGap рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫреЛрдЯреЗ рд╣реИрдВ, рдЬреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдврд╛рдВрдЪрд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ PhoneGap рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЙрдкрд░реНрдпреБрдХреНрдд рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ PhoneGap рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЗрд╕рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 2.0.0 рдерд╛ред рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╣реИ ред рдПрдХ рд╡рд┐рдХрд╛рд╕ рдордВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛ рдЪреБрдирд╛ред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡реАрдбрд┐рдпреЛ рдХреИрдорд░рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:

$('#makeVideo').click(function() { navigator.device.capture.captureVideo(captureSuccess, captureError, { limit : 1 } ); function captureSuccess(mediaFiles) { console.log("Capturing video successfully finished"); } function captureError(error) { console.log("Video capture error + " + error.code); } }); 

рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдПрдХ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕ рд▓рд┐рдЦрдХрд░ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 public class IntentPlugin extends Plugin { тАж } 

рдпрд╣рд╛рдВ рд╣рдо рдХреБрдЫ рд╕рд░рд▓ рддрд░реАрдХреЗ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рдлреЛрдирдЧреИрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрдЯрди рджрдмрд╛рдХрд░ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ (рд╡реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рдмрд┐рдирд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдХреИрдорд░рд╛ рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐:

 private void openPhotoCamera() throws IOException { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); this.cordova.getActivity().startActivity(intent); } 

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рд╡рд┐рдзрд┐:

 private void openBrowse(String url) throws IOException { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); this.cordova.getActivity().startActivity(intent); } 

рдорд╛рдирдЪрд┐рддреНрд░ рд▓реЙрдиреНрдЪ рд╡рд┐рдзрд┐:

 private void openMap(String url) throws IOException { Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(url)); this.cordova.getActivity().startActivity(intent); } 

рдЕрдЧрд▓рд╛, рдПрдХ рдЕрдзрд┐рднрд╛рд░ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдБ:

 @Override public PluginResult execute(String action, JSONArray args, String callbackId) { PluginResult.Status status = PluginResult.Status.OK; String result = ""; try { if (action.equals("makePhoto")) { openPhotoCamera(); } else if (action.equals("lookAtBrowse")) { openBrowse(args.getString(0)); } else if (action.equals("lookAtMap")) { openMap(args.getString(0)); } else { status = PluginResult.Status.INVALID_ACTION; } return new PluginResult(status, result); } catch (JSONException e) { return new PluginResult(PluginResult.Status.JSON_EXCEPTION); } catch (IOException e) { return new PluginResult(PluginResult.Status.IO_EXCEPTION); } } 

рдЬрд╣рд╛рдВ "MakePhoto", "lookAtBrowse" рдФрд░ "lookAtMap" рдЬреИрд╕реА рд▓рд╛рдЗрдиреЗрдВ рд╣рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рджреА рдЬрд╛рддреА рд╣реИрдВред

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╕реБрдВрджрд░ davolno рджрд┐рдЦрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ config.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдкреНрд▓рдЧрдЗрди рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ res / xml рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 <plugin name="IntentPlugin" value="com.ruswizards.phonegapplugin.IntentPlugin"/> 

рдирдИ JS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, IntentPlugin рдХреНрд▓рд╛рд╕ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:

 function IntentPlugin() { }; if(!window.plugins) { window.plugins = {}; } if (!window.plugins.intentPlugin) { window.plugins.intentPlugin = new IntentPlugin(); } 

рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 IntentPlugin.prototype.makePhotoFunction = function(url) { cordova.exec(null, null, "IntentPlugin", "makePhoto", [url]); }; 

рдЕрдм, рдЬрдм рдореЗрдХрдлрд╝реЛрдЯреЛрдлрд╝рдВрдХреНрд╢рди ("") рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдУрдкрдирдлрд╝реЛрдЯреЛрдХреЛрдореЗрд░рд╛ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╡рд╣реА рдЕрдиреНрдп рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ:

 IntentPlugin.prototype.lookAtBrowseFunction = function(url) { cordova.exec(null, null, "IntentPlugin", "lookAtBrowse", [url]); }; IntentPlugin.prototype.lookAtMapFunction = function(url) { cordova.exec(null, null, "IntentPlugin", "lookAtMap", [url]); }; 

рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╣рд╛рдБ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛрдбрд╝реЗрдВ:

 <script type="text/javascript" charset="utf-8" src="intentPlagin.js"></script> 

рдпрд╣ рд╕рдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдм рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ рдмреЙрдбреА рдореЗрдВ 4 рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ:

 <a id="makeVideo" data-role="button">Create video</a> <a id="makePhoto" data-role="button">Create photo</a> <a id="lookAtBrowse" data-role="button">Open browse</a> <a id="lookAtMap" data-role="button">Open map</a> 

рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; рдмрд╛рдХреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рдмрдирд╛рдП рдЧрдП рдереЗред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ:

 $('#makePhoto').click(function() { window.plugins.intentPlugin.makePhotoFunction(""); }); $('#lookAtBrowse').click(function() { window.plugins.intentPlugin.lookAtBrowseFunction("http://www.google.com"); }); $('#lookAtMap').click(function() { window.plugins.intentPlugin.lookAtMapFunction("geo:52.431198,31.004899"); }); 

рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЫрд╛рдк рдЫреЛрдбрд╝реА, рдФрд░ рдлреЛрдирдЧреИрдк рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдкрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рднреА рдкреНрд░рджрд╛рди рдХреАред

Source: https://habr.com/ru/post/In150689/


All Articles