erfan4

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

10 ارسال در این موضوع قرار دارد

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

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

یعنی به صورت مثال اگر ما وارد برنامه شدیم و دکمه 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 قرار بدین

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


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

توی فایل 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]

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


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

کسی نیست به من کمک کنه مشکلم حل بشه؟؟:huh::huh:

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری