رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

درخواست کمک برای کار کرد برنامه در پس زمینه


پست های پیشنهاد شده

با سلام خدمت تمام عزیزان

میخواستم بدونم اگر ما یه برنامه اندروید نوشته باشیم و بخوایم در پس زمینه گوشی همچنان به کارش ادامه بده باید چه کار کنیم ؟

یعنی به صورت مثال اگر ما وارد برنامه شدیم و دکمه home گوشی رو زدیم و به صفحه اصلی رفت کار برنامه پایان پیدا نکنه و همچنان به کارش ادامه بده

یک مثال عرض میکنم مثلا ما یه برنامه نوشتیم که با تکون دادن گوشی تلفن ما در چند ثانیه بلرزه یا مثلا تو برنامه یه دکمه هست که فلش گوشی رو روشن میکنه اما در دو حالت وقتی ما دکمه home رو زدیم و به صفحه خانگی رفتیم همچنان با تکون دادن گوشی به حالت ویبره بره و یا فلش خاموش نشه:exclamation:

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

آیا ربط به سرویس ها داره؟ یا چیز دیگه ای هست؟

اگه میشه یه توضیح بدید و بگین من برای این کار دقیقا چی رو باید یاد بگیرم؟

فقط از مدیران سایت خواهش میکنم این سوال مثل سوال های دیگه بی جواب نمونه:angel:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام.

اینجا خیلی سؤالا بی جواب میمونه دوست عزیز . باید شانس بیارید تا کسی جوابتونو بده ...

این کار در کل توی برنامه نویسی، با چند هسته کردن برنامه و هم روندی انجام میشه که Multi Thread بهش میگن . شاید راه دیگه ای برای کاربردای خاص وجود داشته باشه، ولی عملکرد همزمان راهی جز چند هسته نوشتن برنامه نداره . آموزشای زیادی توی اینترنت در رابطه با هم روندی برنامه وجود داره؛ بگردید راحت پیدا میکنید ...

پ.ن : قاعدتا باید توی انجمن ی تاپیک برای پرسیدن سؤالات باشه . زیاد جالب نیست برای هر سؤال تاپیک جداگونه ای ایجاد کنید ...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام.

اینجا خیلی سؤالا بی جواب میمونه دوست عزیز . باید شانس بیارید تا کسی جوابتونو بده ...

این کار در کل توی برنامه نویسی، با چند هسته کردن برنامه و هم روندی انجام میشه که Multi Thread بهش میگن . شاید راه دیگه ای برای کاربردای خاص وجود داشته باشه، ولی عملکرد همزمان راهی جز چند هسته نوشتن برنامه نداره . آموزشای زیادی توی اینترنت در رابطه با هم روندی برنامه وجود داره؛ بگردید راحت پیدا میکنید ...

پ.ن : قاعدتا باید توی انجمن ی تاپیک برای پرسیدن سؤالات باشه . زیاد جالب نیست برای هر سؤال تاپیک جداگونه ای ایجاد کنید ...

بسیار ممنون از پاسخ شما دوست عزیز:heart:

یعنی برای کارکرد برنامه در پس زمینه نیاز به برنامه نویسی موازی یا چند ترده هست؟

ببخشید میشه بهتر برای من توضیح بدین من متوجه نمیشم چرا

آخه شنیدم برنامه نویسی چند هسته ای کاری سخته اما من برنامه هایی ایرانی رو دیدم که در پس زمینه به کارشون ادامه میدن مثل برنامه های ویجت درصد باتری که با این که ما همیشه رو صفحه اصلی هستیم ولی درصد باتری ما متغیر هست و برنامه در حال کار کردنه منم فقط همینو میخوام که برنامه با بسته شدن متوقف بشه اما با زدن کلید home به همه کار هایی که باید انجام بده ادامه بده به صورت مثال من برای آزمایش که ببینم میشه یا نه یه برنامه ساده نوشتم که یک آهنگ رو پخش میکنه و وقتی کلید home رو میزدم پخش متوقف نمیشد و در پس زمینه پخش میکرد منم دقیقا همینو میخوام اما یه برنامه آزمایشی دیگه ساختم که با زدن کلید برگشت گوشی تلفن رو ویبره بره داخل خود برنامه کار میکرد اما وقتی کلید home رو میزدم روی صفحه گوشی کار نمیکرد

من فقط میخوام بدونم چطور میشه برنامه هامون پس از باز شدن در پس زمینه هم کار کنه یعنی تنها راهش برنامه نویسی چند هسته ای هست؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام.

اینجا خیلی سؤالا بی جواب میمونه دوست عزیز . باید شانس بیارید تا کسی جوابتونو بده ...

این کار در کل توی برنامه نویسی، با چند هسته کردن برنامه و هم روندی انجام میشه که Multi Thread بهش میگن . شاید راه دیگه ای برای کاربردای خاص وجود داشته باشه، ولی عملکرد همزمان راهی جز چند هسته نوشتن برنامه نداره . آموزشای زیادی توی اینترنت در رابطه با هم روندی برنامه وجود داره؛ بگردید راحت پیدا میکنید ...

پ.ن : قاعدتا باید توی انجمن ی تاپیک برای پرسیدن سؤالات باشه . زیاد جالب نیست برای هر سؤال تاپیک جداگونه ای ایجاد کنید ...

بسیار ممنون از پاسخ شما دوست عزیز:heart:

یعنی برای کارکرد برنامه در پس زمینه نیاز به برنامه نویسی موازی یا چند ترده هست؟

ببخشید میشه بهتر برای من توضیح بدین من متوجه نمیشم چرا

آخه شنیدم برنامه نویسی چند هسته ای کاری سخته اما من برنامه هایی ایرانی رو دیدم که در پس زمینه به کارشون ادامه میدن مثل برنامه های ویجت درصد باتری که با این که ما همیشه رو صفحه اصلی هستیم ولی درصد باتری ما متغیر هست و برنامه در حال کار کردنه منم فقط همینو میخوام که برنامه با بسته شدن متوقف بشه اما با زدن کلید home به همه کار هایی که باید انجام بده ادامه بده به صورت مثال من برای آزمایش که ببینم میشه یا نه یه برنامه ساده نوشتم که یک آهنگ رو پخش میکنه و وقتی کلید home رو میزدم پخش متوقف نمیشد و در پس زمینه پخش میکرد منم دقیقا همینو میخوام اما یه برنامه آزمایشی دیگه ساختم که با زدن کلید برگشت گوشی تلفن رو ویبره بره داخل خود برنامه کار میکرد اما وقتی کلید home رو میزدم روی صفحه گوشی کار نمیکرد

من فقط میخوام بدونم چطور میشه برنامه هامون پس از باز شدن در پس زمینه هم کار کنه یعنی تنها راهش برنامه نویسی چند هسته ای هست؟

من توی اندروید تقریبا تازه واردم و مثل خودت هنوز خیلی جا داره تا حرفی وس گفتن داشته باشم. نمیدونم، شاید راه دیگه ای هم باشه، اما هم روندی برنامه اونقدرام که فکر میکنی سخت نیست . درضمن یکی از پرکاربردترین مباحث و مفاهیم برنامه نویسی توی هر زبونی هست . یکی از اصول حرفه ای شدنه به نظر من .

بازم میتونی سؤال کنی، من راه حل دیگه ای به ذهنم نمیرسه ...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوستان کسی نیست به من جواب بده؟:(:(

در این لینک یاد داده که چطور برنامه بعد از روشن شدن گوشی در پس زمینه کار کنه:

http://p30droid.com/Thread-AutoStartUp-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D9%BE%D9%84%DB%8C%DA%A9%DB%8C%D8%B4%D9%86?highlight=%D9%82%D9%81%D9%84

 اما من میخوام این کار به صورت دستی باشه یعنی بعد از زدن یه کلید تو برنامه برنامه شروع کنه به اجرا در پس زمینه خواهش میکنم جواب بدین این برای من خیلی مهمه:huh::huh::huh::huh:

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام دوست عزیز

این کد و توی فایل جاوا بذارید

[shcode=java]package com.example.beginservice;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity {

     /** Called when the activity is first created. */

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button btnStart=(Button)findViewById(R.id.btnStartService);

        btnStart.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v){

                startService(new Intent(getBaseContext(),MyService.class));

            }

           

        });

    Button btnStop=(Button)findViewById(R.id.btnStopService);

    btnStop.setOnClickListener(new View.OnClickListener(){

        public void onClick(View v){

            stopService(new Intent(getBaseContext(),MyService.class));

        }

    });

    }}[/shcode]

این کد برای سرویس هست.شما یه فایل جاوا به اسم MyService.java ایجاد کنید و کد زیر و توش قرار بدین

[shcode=java]package com.example.beginservice;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.widget.Toast;

public class MyService extends Service {

   

    @Override

    public IBinder onBind(Intent arg0) {

        return null;

     

    }

    @Override

    public int onStartCommand(Intent intent, int flags, int startId) {

        // We want this service to continue running until it is explicitly

        // stopped, so return sticky.

        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();

        return START_STICKY;

    }

    @Override

    public void onDestroy() {

        super.onDestroy();

       

        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();

    }

}

[/shcode]

اینم فایل xml

[shcode=xml]

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

   

     

        android:id="@+id/btnStartService"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_alignLeft="@+id/btnStopService"

        android:layout_alignParentTop="true"

        android:layout_marginTop="25dp"

        android:onClick="startService"

        android:text="Start Service" />

   

        android:id="@+id/btnStopService"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_below="@+id/btnStartService"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="17dp"

        android:onClick="stopService"

        android:text="Stop Service" />

   

[/shcode]

کد زیر و هم به فایل androidmanifest.xml اضافه کنین

[shcode=xml] 

       

 [/shcode]

موفق باشین

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوست عزیز

این کد و توی فایل جاوا بذارید

[shcode=java]package com.example.beginservice;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity {

     /** Called when the activity is first created. */

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button btnStart=(Button)findViewById(R.id.btnStartService);

        btnStart.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v){

                startService(new Intent(getBaseContext(),MyService.class));

            }

           

        });

    Button btnStop=(Button)findViewById(R.id.btnStopService);

    btnStop.setOnClickListener(new View.OnClickListener(){

        public void onClick(View v){

            stopService(new Intent(getBaseContext(),MyService.class));

        }

    });

    }}[/shcode]

این کد برای سرویس هست.شما یه فایل جاوا به اسم MyService.java ایجاد کنید و کد زیر و توش قرار بدین

[shcode=java]package com.example.beginservice;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.widget.Toast;

public class MyService extends Service {

   

    @Override

    public IBinder onBind(Intent arg0) {

        return null;

     

    }

    @Override

    public int onStartCommand(Intent intent, int flags, int startId) {

        // We want this service to continue running until it is explicitly

        // stopped, so return sticky.

        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();

        return START_STICKY;

    }

    @Override

    public void onDestroy() {

        super.onDestroy();

       

        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();

    }

}

[/shcode]

اینم فایل xml

[shcode=xml]

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

   

     

        android:id="@+id/btnStartService"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_alignLeft="@+id/btnStopService"

        android:layout_alignParentTop="true"

        android:layout_marginTop="25dp"

        android:onClick="startService"

        android:text="Start Service" />

   

        android:id="@+id/btnStopService"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_below="@+id/btnStartService"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="17dp"

        android:onClick="stopService"

        android:text="Stop Service" />

   

[/shcode]

کد زیر و هم به فایل androidmanifest.xml اضافه کنین

[shcode=xml] 

       

 [/shcode]

موفق باشین

بسیار ممنون از شما دوست عزیز:heart::heart:

فقط یه نکته من دستوراتی رو که میخوام به صورت سرویس انجام بشه باید کجا بنویسم؟:huh:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

توی فایل MyService.java

کدی که میخواین سرویس وقت اجرا کاری انجام بده توی OnStart قرار بدین

درود بر شما دوست گرامی :blush:

این سرویس به تنهایی اجرا میشه و مشکلی نداره اما من برای اینکه امتحانش کنم این کدا رو توش نوشتم که وقتی به پس زمینه گوشی میرم با زدن کلید افزایش صدا گوشی چند ثانیه بره روی ویبره ولی توی قسمتایی که زیرش خط کشیده مثل onkeydown از من خطا گرفته لطفا منو راهنمایی کنید و بگین چطور این خطا رو رفع کنم؟

[align=left]package com.example.erfan;[/align]

[align=left]import android.app.Service;[/align]

[align=left]import android.content.Context;[/align]

[align=left]import android.content.Intent;[/align]

[align=left]import android.os.IBinder;[/align]

[align=left]import android.os.Vibrator;[/align]

[align=left]import android.view.KeyEvent;[/align]

[align=left]import android.widget.Toast;[/align]

[align=left]public class MyService extends Service {[/align]

[align=left] @Override[/align]

[align=left] public IBinder onBind(Intent arg0) {[/align]

[align=left] return null;[/align]

[align=left] }[/align]

[align=left] @Override[/align]

[align=left] public int onStartCommand(Intent intent, int flags, int startId) {[/align]

[align=left] public boolean onKeyDown(int keyCode, KeyEvent event) [/align]

[align=left] { [/align]

[align=left] if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { [/align]

[align=left] Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);[/align]

[align=left] vibrator.vibrate(2000); [/align]

[align=left] return true;[/align]

[align=left] } else {[/align]

[align=left] return super.onKeyDown(keyCode, event); [/align]

[align=left] }[/align]

[align=left] }[/align]

[align=left] Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();[/align]

[align=left] return START_STICKY; [/align]

[align=left] }[/align]

[align=left] @Override[/align]

[align=left] public void onDestroy() {[/align]

[align=left] super.onDestroy();[/align]

[align=left] Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();[/align]

[align=left] }[/align]

[align=left]}[/align]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...