অ্যান্ড্রয়েড: কীভাবে কোটলিনের সাথে একটি ফটো তুলবেন

এই প্ল্যাটফর্মের আমার প্রথম নিবন্ধে, আমি আপনাকে ব্যাখ্যা করতে চাই যে আপনি কীভাবে ক্যামেরা অ্যাপ্লিকেশনটি অ্যান্ড্রয়েডে একটি ফটো তুলতে পারেন এবং ফলস্বরূপ চিত্রটি আপনার অ্যাপ্লিকেশনটিতে সংহত করতে পারেন। প্রোগ্রামিং ভাষা হিসাবে কোটলিনের সাথে এই সমস্ত।

প্রথমে আমাদের অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করা দরকার। এই উদাহরণে আমি অ্যান্ড্রয়েড স্টুডিও ২.৩.৩ ব্যবহার করছি।

নতুন প্রকল্পটি তৈরি করার পরে আমাদের প্রকল্পটি সেট করা দরকার যাতে আমরা কোটলিনের সাথে কাজ করতে পারি। এটি করার জন্য, কোটলিন ওয়েবসাইটে দেওয়া নির্দেশাবলী অনুসরণ করুন:

এই প্রকল্পে কিছু গ্রন্থাগার কিছু পদক্ষেপ সহজ করার জন্য ব্যবহৃত হয়, উদাঃ খ। বাঁধাই, চিত্র প্রদর্শন এবং অনুমতিগুলির জন্য অনুরোধ দেখুন:

  • আমি ভিউ বাঁধার জন্য বাটারকনিফ ব্যবহার করেছি: http://jakewharton.github.io/butterknife/
  • আমি অনুমতি অনুরোধে ডেক্সটার যুক্ত করেছি: https://github.com/Karumi/Dexter
  • আমি ছবিগুলি প্রদর্শন করতে ফ্রেস্কো ব্যবহার করেছি: http://frescolib.org/

পরবর্তী পদক্ষেপটি হ'ল আমাদের অ্যান্ড্রয়েড ম্যানিফেস্টে আমাদের অ্যাপের জন্য প্রয়োজনীয় অনুমতিগুলি নির্দিষ্ট করা। এই ক্ষেত্রে আমাদের android.permission.WRITE_EXTERNAL_STORAGE দরকার।

আসুন আমাদের মূল ক্রিয়াকলাপের জন্য লেআউটটি তৈরি করি





    

    

স্ক্রিনটি এরকম দেখাচ্ছে:

মূল ক্রিয়াকলাপ

মেইনএ্যাকটিভিটি.কটি ফাইলটিতে আমরা ভাসমান অ্যাকশন বোতামে একটি ক্লিক শ্রোতাদের রেখেছি যাতে ব্যবহারকারী যখন এতে ট্যাপ করেন তখন আমরা ক্যামেরা অ্যাপটি শুরু করতে পারি।

মজার ওভাররাইড অনক্রিট (সেভডআইনস্ট্যান্সস্টেট: বান্ডেল?) {সুপার.অনক্রিয়েট (সেভডআইনস্ট্যান্সস্টেট) সেটকন্টিভিউ (আর.আলআউট.অ্যাক্টিভিটি_মাইন) বাটারকনিফ.বাইন্ড ফ্যাব ক্যাপচারফোট? .setOnClickListener {validatePermission ()}

বৈধতাপ্রাপ্তি () পদ্ধতিটি অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় লেখার অনুমতিগুলি পরীক্ষা করে এবং অনুরোধ করে। যদি অনুমোদন দেওয়া হয়, ক্যামেরা অ্যাপটি একটি অভিপ্রায় মাধ্যমে শুরু করা হয়:

প্রাইভেট মজাদার বৈধতাপ্রাপ্তি () {ডেক্সটার.ইথঅ্যাক্টিভিটি (এটি) .পথ পার্মিশন (ম্যানিফেস্ট.প্রিমেশন.উইআরআইটি। টেক্সটনারেলালপোরেজ)। উইথলিস্টনার (অবজেক্ট: পারমিশনলিস্টেনার {ওভাররাইট মজা onPermissionGranted (প্রতিক্রিয়া: PermissionGrantedResponse?) {লঞ্চ ক্যামেরা) , টোকেন: পারমিশন টোকেন?) Ler সতর্কতা ডায়ালগ.বিল্ডার (এটি @ মেইনঅ্যাক্টিভিটি) setসেটিটিটল (আর। স্ট্রিং.স্টোরেজ_স্পারেশন_প্রেশন_শিরোনাম_শিরোনাম)। সেটমেসেজ (আর। স্ট্রিং.স্টোরেজ_পারমিশন_মেশন_সেসেজ) .সেটেজেটিভবাটন স্ট্রিং (অ্যান্ড্রয়েড.আর.সি.আগ্র.আর.আরগ্রেশন.আর.আগ্রেশন.আর। কথোপকথন.দল () টোকেন? .cancelPermissionRequest ()।) .setPositiveButton (android.R.string.ok, {কথোপকথন, _ -> কথোপকথন.দলিত () টোকন? .কন্টিনিউপ্রেমিশনসংশ্লিষ্টতা ()}) .setOnDismissListener ({টোকেন? () }অরাইটরাইট মজা onPermissionDenied (উত্তর: PermissionDeniedResponse?) {Snackbar.make (mainContainer !!, R.string.storage_permission_denied_message, Snackbar.LENGTH_LONG)। দেখান ()}}) ck

লঞ্চকামেরা () পদ্ধতিটি এমন একটি পথ তৈরি করে যা আমরা আমাদের অভিপ্রায়গুলিতে চলে যাই এবং তারপরে ক্যামেরা অ্যাপটিকে কল করি। পরে ব্যবহারের জন্য আমাদের যে সদস্যটি ভেরিয়েবলে তৈরি করেছি সে পথটিও সংরক্ষণ করতে হবে।

ব্যক্তিগত মজাদার প্রবর্তন ক্যামেরা () {মান মান = কন্টেন্টভ্যালু (1) মান.পুট (মিডিয়াস্টোর.আইমেজস.মিডিয়া.মিম্পাইলওয়াইপি, "চিত্র / জেপিজি") ভাল ফাইলআউরি = কন্টেন্ট রিসোলভার .আইনার্ট (মিডিয়াস্টোর.আইমেজ.মিডিয়া.অ্যাক্টেরনাল_সিএনএটিআইআরআই, মানসমূহ) ভাল অভিপ্রায় = উদ্দেশ্য (মিডিয়াস্টোর। অ্যাকশন_আইএমপিএক্সসিএপিটিচার) যদি (ইন্টেন্ট.আরলসঅ্যাক্টিভিটি (প্যাকেজ ম্যানেজার)! = নাল) {এমক্রেনারপোথপথ = ফাইলউরি.টোস্ট্রিং () অভিপ্রায় .FLAG_GRANT_WRITE_URI_PERMISSION) ক্রিয়াকলাপের জন্য ফলাফল (উদ্দেশ্য, TAKE_PHOTO_REQUEST)}

একবার আমরা ছবি তোলার পরে, আমাদের onctivityResult () প্রয়োগ করতে হবে যাতে আমরা সবে তোলা ফটোটি প্রক্রিয়া করতে এবং প্রদর্শন করতে পারি:

ক্রিয়াকলাপের ফলাফলের উপরে মজা ওভাররাইড করুন (অনুরোধ কোড: ইনট, ফলাফলকোড: ইন্ট, ডেটা: ইনটেন্ট?) {
যদি (ফলাফলকোড == ক্রিয়াকলাপ.আরআইসেলT_OK && অনুরোধ কোড == TAKE_PHOTO_REQUEST) {প্রক্রিয়া ক্যাপচারড ফটো ()} অন্য {সুপার.অ্যাকটিভিটি ফলাফল (অনুরোধ কোড, ফলাফলকোড, ডেটা)}

আসল ছবিটি অনেক বড় হওয়ায় আপনি যখন আমাদের অ্যাপে এটি প্রদর্শনের চেষ্টা করবেন তখন কোনও স্মৃতি ত্রুটি ঘটতে পারে। ফ্রেসকো চিত্রটি প্রদর্শিত হওয়ার আগেই আকারটি পরিবর্তন করার একটি সহজ উপায় সরবরাহ করে।

বেসরকারী মজাদার প্রক্রিয়া ক্যাপচারড ফটো () {ভাল কার্সার = কন্টেন্টেরসোলভার.কোয়ারি (ইউরি.পারস (এমকেনারপোথোপাথ), অ্যারে (1) {android.provider.MediaStore.Images.I छवि কলামগুলি.ডাটা}, নাল, নাল, নাল) কর্সার ফটোপথ = কার্সার.গেটস্ট্রিং (0) কার্সার.ক্লোজ () ভাল ফাইল = ফাইল (ফটোপথ) ভাল ইউরি = ইউরি.ফ্রومফাইলে (ফাইল) ভল উচ্চতা = রিসোর্স.জেটডাইমেনশনপিক্সেলসাইজ (আর.ডাইমেন.ফোটো_ হাইট) ভল প্রস্থ = রিসোর্স.জেটডাইমেনশনপিক্সেলসাইজ (আর .dime.photo_width) ভাল অনুরোধ = চিত্রআপনিচ্ছুক বিল্ডার। নতুন বিল্ডার উইথসোর্স (uri)। সেটরাইজাইপেশনস (পুনরায় আকার (উচ্চতা, উচ্চতা)) .বিল্ড () ভাল কন্ট্রোলার = ফ্রেস। বিল্ড () imgvPhoto? .কন্ট্রোলার = নিয়ামক}

এখন আমরা ফটো তুলতে পারি এবং এগুলিকে আমাদের অ্যাপে সহজেই প্রদর্শন করতে পারি।

নমুনা প্রকল্পের উত্স কোডটি এখানে পাওয়া যাবে: https://github.com/bionicwan/capturephoto

আরো দেখুন

ফ্রিল্যান্স বিকাশকারীদের ভাড়া দেওয়ার জন্য কি কোনও অনলাইন প্ল্যাটফর্ম রয়েছে? আমি কীভাবে জানতে পারি যে আমি কম্পিউটার বিজ্ঞানে একটি ডিগ্রি অধ্যয়ন করতে সক্ষম কিনা? কীভাবে আমরা আমাদের অ্যাপ্লিকেশনটি একটি অর্থনৈতিক ব্যয়ে উন্নত করব? সি ++ ব্যাকগ্রাউন্ডের পরে জাভাস্ক্রিপ্ট শিখতে কতক্ষণ সময় লাগে? এইচটিএমএল এ আমি কীভাবে ক্লিকযোগ্য চিত্রের লিঙ্ক তৈরি করব? সেরা ওয়েব হোস্টিং কোনটি? আমি অনলাইনে কীভাবে সত্যিকারের 250 ডলার করতে পারি? আমি কীভাবে আমার ওয়েবসাইটে ট্র্যাফিক পেতে পারি? ট্র্যাফিকের অভাব গুরুতরভাবে আমাকে মানসিকভাবে প্রভাবিত করতে শুরু করেছে। আমি কেবল আমার ওয়েবসাইটটি মাটি থেকে নামাতে পারি না।