برنامه برای اندرويد

mbagsoft

Member
دوستان من با adobe flash و زبان as3 برای کامپیوتر اوتوران میسازم. الآن دارم برای گوشی های اندروید برنامه میسازم ولی به دو مشکل برخوردم که با جستجو تو انترنت هم جوابی براشون پیدا نکردم.
اولی اینکه چطور میشه برنامه رو بدون نصب air player تو گوشی اجرا کرد؟
دوم اینکه ما تو فلش برای کامپیوتر برای ساختن گزینه ی خروج از برنامه یه فایل به نام fscommand میساختیم ودستور exit رو تو فلش مینوشتیم. اما برای app گوشی های اندروید که نمیشه فایل fscommand ساخت. فقط باید یه app با بسوند apk بسازیم و تو گوشی نصب کنیم. پس چطور میشه گزینه ی خروج از برنامه برای گوشی های اندروید ساخت؟ من با ادوب cs6 کار میکنم.
واقعا ممنون میشم کمکم کنین.....
 

++Hadi++

Active Member
1- برای عدم نیاز به فلش پلیر تو فلش cs6 ،گزینه خروجی air for android 3.5 رو انتخاب می کنید و تو منوی file ،گزینه air 3 for android settings رو می زنید.تو تب دوم یا همون deployment گزینه embed air runtime with applicaton رو می زنید .
2 -برای این کار از این دستور استفاده کنید...
PHP:
NativeApplication.nativeApplication.exit(0);
 

mbagsoft

Member
أقا زحماتت تو اين انجمن غير قابل جبرانه. واقعا تشكر ميكنم. اينارو امتحان ميكنم ببينم جي ميشه. جيزي كه تو ميكي قطعا درسته
 

mbagsoft

Member
متشکرم هادی. درست شد. درباره ی ساختن نوار زمانی برای فایل صوتی وتصویری یعنی همون نواری که باهاش فیلم یا صوت رو جلو وعقب میبریم میتونی یه توضیحی بدی. متشکرم ازت
 

perna

Member
هادی جان ، خب فکر کنم باز هم نیازه که adobe air روی دستگاه اندرویدی نصب بشه؟ درسته؟
یعنی اگه دستگاهی adobe air نداشته باشه نمی تونه این برنامه رو هم اجرا کنه
 

++Hadi++

Active Member
تا جایی که تست کردم نه خیر نیازی نیست.
فلسفه امبد شدنش برا عدم نیاز به نصب شدنش هست.باز تست کنید ...اگه خلاف گفته هام ثابت شد بگید تست کنم...
در مورد اسلایدر هم می تونی به راحتی با روش هایی که من تو کلاس های ویدئو پلیر وmp3 player کار کردم یه اسلایدر تایم لاینبنویسی.یعنی موقعی که mousedown شد ،یه رویداد mousemove رو به stage بدی و تابع اون ،به میزان mou*** شی parent دو شی handle , area بیاد و حرکت handle رو انجام بده.بعدش هم کنار اضافه کردن رویداد mousedown اولیه ،بیای و رویداد mouseup رو به stage بدی که اگه طرف موس رو تو stage ول کرد ،اسلایده ول کنه.التته فک کنم نمونه کار و سمپل و کاس و کامپوننت تو این زمینه زیاد باشه.
در ضمن با فلکس یا به بیان بهتر ،flash builder شما می تونی یه اسلایدر سریع و راحت بزاری...بای...
 

e_naderlou

Member
سلام به مردان شریف
میشه بگید ما وقتی یه فایل xml توی آندروید میخواییم لود کنیم دقیقا چطوری آدرس دهی باید بکنیم؟
من این کارو کردم ولی نخوند:
PHP:
/mnt/sdcard/test.xml
 

Amir02111

Member
سلام

من تا حالا ببرای اندروید یه همچین کاری نکردم ولی به نظر من بهتره که فایل xml داخل خود فایل فلشت باشه تا اونکه بخوای از بیرون اونو لودش کنی این طوری از بیرون هم به اون دسترسی ندارن...
 

e_naderlou

Member
ممنونم از پیشنهادت شاید روی اینم فکر کنم برای کارای دیگه
ولی اینجا باید فایل xml من از جای دیگه تغزیه بشه و نیاز هستش که external باشه
 

mbagsoft

Member
من جوابتو نمیدونم ولي سؤال برام پيش اومد. مگه ميشه براي اندرويد فايل يا صوت يا فيلم رو لود كرد. چون تا جايي كه من اطلاع دارم فايل هاي اكسترنال كار نميكنن. در نهايت ما فقط بايد يه فايل با بسوند apk تو گوشي نصب كنيم خب چطور ميشه فايل هايي كه قراره لود بشن رو لود كنه؟
 

++Hadi++

Active Member
کاملا بستگی به مکانی که می خواهید از اونجا بخونید داره...
ولی به دو شکل کلی می شه خوند :
1- با استفاده از File و بروز کردن فایل که تو این حالت ،می یاد و کل فایل های با extension ای که شما فیلتر کردین می یاره...
2- با استفاده از دادن آدرس فایل و لود کردنش...
فکر می کنم با همون آدرسی که نوشتید می شه به صورت عمومی یه فایل رو خوند ولی برا تست و کسب اطمینان ،یه فایل رو بروز کنید و بعد از اینکه اونو select کدین ،آدرس nativePath اونو تو یه تکست فیلد بریزید تا مطمئن شید آدرس ها رو از کجا باید خوند ولی فکر می کنم آدرس باید تو یه حالتی میل آدرس شما باشه...
 

e_naderlou

Member
الان آقا محسن جواب منو داد و مشکل حل شد
توی قسمت پابلیش در قسمت اینکلود فایل میتونیم فایل xml خودمونو قرار بدیم و دیگه حله
البته اگه قصد لود از url باشه که دیگه مشکلی نیست
 

mbagsoft

Member
دوستان من سرگردان ساختن seek bar براي فايل صوتي هستم. لطفا راهنمايي كنين. مبتدي نيستم ولي حرفه اي هم نيستم كه فقط با سرنخ ها متوجه شم. لطفا......
 

Amir02111

Member
ساخت seek bar کار زیاد پیچیده ای نیست و کافی چند نکته رو بدونید...

ما درباره ی زمان صوتمون دو تا متد داریم که یکیش زمانی هست که صدای در حال پخش در اون زمان هست که مربوط میشه به SoundChannel ای که داره صدامونو پخش می کنه(nameSoundChannel.position)، ویکی دیگش مربوط به Sound می شه که زمان کل رو داره نشون می ده(nameSound.length). اگه هر کدوم از اینها رو trace کنید یه عدد رو نشون می ده که مربوط به زمان صوت در حال پخش هستش
اگه تا این جا رو بلد باشی تقریبا 50 درصد کارو فهمیدی بقیش یه خورده کد نویسی داره و محاسبات ریاضی ساده

امیدوارم تونسته باشم کمکت کنم

اگه بازم نفهمیدی بگو تا با کد بیشتر توضیح بدم
 
آخرین ویرایش:

mbagsoft

Member
امیر جان یه چیز كلي متوجه شدم ولي كاملا نفهيدم كه بتونم اجرا كنم. اكه كد بدي كه خيلي ممنونت ميشم. كدها رو فقط كپي نميكنم. ازشون سردرميارم
 

Amir02111

Member
خوب، ما اول صدامونو داخل استیج لود می کنیم
[PHPS]var url:URLRequest = new URLRequest("music.mp3");var snd:Sound = new Sound();
var ch:SoundChannel = new SoundChannel();


snd.load(url);
ch = snd.play();[/PHPS]

شما اگه این کارو کنید صدامون لود و اون پخش می شه تا اینجا ما فقط صدامونو داخل استیج لود کردیم

حالا باید ساخت نوار زمانی صوتمون رو شروع کنیم برای این کار یه مستطیل رو دو بار تبدیل به مووی کلیپ می کنیم واسم اولیشو می زاریم bar و دومیشو seek bar و width اونو همون اول داخل یه متغییر
ذخیره می کنیم(var width_bar:Number = seek_barbar.width) و حالا یه رویداد ENTER_FARME ایجاد می کنم تا در هرلحظه نوار زمانیمونو آپدیت کنه
[PHPS]stage.addEventListener(Event.ENTER_FRAME, update);

function update(e:Event)
{
seek_bar.bar.width = ch.position / snd.length * width_bar;
}[/PHPS]

همونطور که میبینی داخل function طول bar مون با یه تناسب راحت نسبت به زمان صدامون به دست می آید(تا اینجا شو یه تست کن کار جالبیه)

برای اینکه هم شما و خودم گیج نشیم کارو مرحله ای می کنیم:green:
"پس این شد مرحله 1"​
 

پیوست ها

  • Step_1.rar
    5.9 کیلوبایت · بازدیدها: 5

Amir02111

Member
"مرحله 2"
تو این مرحله قصد دارم دکمه های Play ، Puase رو به کارم اضافه کنم چون مراحل راحته من فقط کدهاشو می زارم...

[PHPS]seek_bar.play_btn.addEventListener(MouseEvent.CLICK, play_click);
seek_bar.pause_btn.addEventListener(MouseEvent.CLICK, pause_click);

function play_click(e:MouseEvent)
{
seek_bar.play_btn.visible = false;
seek_bar.pause_btn.visible = true;
ch = snd.play(ch.position);
}


function pause_click(e:MouseEvent)
{
seek_bar.play_btn.visible = true;
seek_bar.pause_btn.visible = false;
ch.stop();
}

[/PHPS]

فقط یه نکته ای وجود داره اونم اینکه ما برای play کردن صدامون دو راه داریم:
[PHPS]ch = snd.play(ch.position);

ch = snd.play();[/PHPS]

همونطور که قبلا گفتم nameSoundChannel.position زمانی رو نشون می ده که صدامون در اون ثانیه قرار داره کد اول نقش pause رو انجام می ده یعنی صدامونو که قبلا stop کردیم با این روش play کنیم ادامه ی صدامون پخش می شه و کد دوم هم طوری عمل می کنه که صدامون از ابتدا پخش می شه...
 

پیوست ها

  • Step_2.rar
    7.7 کیلوبایت · بازدیدها: 5
آخرین ویرایش:

Amir02111

Member
"مرحله 3"
تو این مرحله قصد دارم دکمه seek_bar رو به نوار زمانی مون اضافه کنم

برای این کار یه دکمه در داخل مووی کلیپ seek_bar مون درست می کنم و اودر نقطه ی صفر و صفر(0,0) قرار می دیم. نکته جالبش اینجاست که چون bar ما در نقطه صفر و صفر قرار داره بنابراین طول bar مون هر چه قدر باشه برابر با x مووی کلیپ seek_bar مون هستش. به خاطر همین این خط کد رو به رویداد function آپدیتمون (ENTER_FRAME) اضافه می کنیم
[PHPS]seek_bar.btn.x = seek_bar.bar.width;[/PHPS]

راستی یادم رفت که بگم دکمه ای که روی نوار زمانی درگ می شه اسمش btn هست.

خوب حالا باید دستور درگ روی bar مون رو بدیم و تنظیماتش رو که خیلی راحته...

[PHPS]var re:Rectangle = new Rectangle(0,0,width_bar,0)

seek_bar.btn.addEventListener(MouseEvent.MOUSE_DOWN, start_drag);

function start_drag(e:MouseEvent)
{
ch.stop();
seek_bar.btn.startDrag(false, re);
stage.removeEventListener(Event.ENTER_FRAME, update);
stage.addEventListener(MouseEvent.MOUSE_UP, stop_drag);

}


function stop_drag(e:MouseEvent)
{
ch = snd.play(seek_bar.btn.x / width_bar * snd.length);
seek_bar.btn.stopDrag();
stage.addEventListener(Event.ENTER_FRAME, update);
stage.removeEventListener(MouseEvent.MOUSE_UP, stop_drag);
}

[/PHPS]
 

پیوست ها

  • Step_3.rar
    9 کیلوبایت · بازدیدها: 5

mbagsoft

Member
عالی بود. تا يه جاييشونو ميدونستم اما به صورت پراکنده. با توضیح تو کامل متوجه شدم ممنون. بریم مرحله ی بعد.
امیدوارم جلو وعقب بردن صدا با ماوس با کلیک روی seek bar هم ضمن مراحلت باشه.
خیلی با ارزشی ممون
 

Amir02111

Member
"مرحله 4"
خوب تقریبا کارمون تموم شد اینجا می خوام بهش یه نشان دهنده زمان رو اضافه کنم

این یه کلاسه که ثانیه رو به فرمت HH:MM:SS تبدیل می کنه
[PHPS]function convertToHHMMSS($seconds:Number)
{
var s:Number = $seconds % 60;
var m:Number = Math.floor(($seconds % 3600 ) / 60);
var h:Number = Math.floor($seconds / (60 * 60));


var hourStr:String = (h == 0) ? "" : doubleDigitFormat(h) + ":";
var minuteStr:String = doubleDigitFormat(m) + ":";
var secondsStr:String = doubleDigitFormat(s);


return (hourStr + minuteStr + secondsStr);
}


function doubleDigitFormat($num:uint)
{
if ($num < 10)
{
return ("0" + $num);
}
return ($num);
}[/PHPS]


}



حالا این کد ها رو به function update مون اضافه می کنیم
[PHPS]seek_bar.current_time.text = convertToHHMMSS(Math.round(ch.position / 1000));
seek_bar.totall_time.text = convertToHHMMSS(Math.round(snd.length / 1000));[/PHPS]




من یه نکه ای رو یادم رفت که بگم اونم اینه که هردو متد positon و length زمان رو به صورت میلی ثانیه میدن و همونطور که می دونید هر 1000 میلی ثانیه برابراست با 1 ثانیه

به همین راحتی شما می تونید یه seek_bar برای صداتون درست کنید...



از همه اساتید عذر خواهی می کنم که تو کارشون دخالت کردم:)
 

پیوست ها

  • Step_4.rar
    9.9 کیلوبایت · بازدیدها: 3
آخرین ویرایش:

جدیدترین ارسال ها

بالا