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

مشکل در ضبط صدا (حل شد ممنون)


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

سلام دوستان:heart:  

 من قبلا یه بار این سوال رو پرسیدم دوستان گفتند که (با این کد های کم و اطلاعات پایین نمیشه مشکلتون رو فهمید) منم الان اومدم این جا یه بار دیگه کامل تر کد هارو بزرام و مشکل رو مطرح کنم:D  

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

 خلاصه ممنون میشم راهنماییم کنید...  

 من با مطالب پیش که در انجمن بحث شده بود یاد گرفتم که چجوری باید صدا رو ضبط و پخش کرد و تو بخشی از برنامه که لازم داشتم استفاده کردم اما یه مشکل دارم هرچی سرچ زدم کد های دیگه هم به همین صورت بود که من نوشتم اما برنامه من ایراد داره و برنامه اونا نداره:huh:  

کلافم کرده به خدا:( نمیدونم چیکارش کنم:exclamation:

 این کل کد های اکتیویتیم هست...  

 [shcode=java]

 public class FavqxActivity extends AppCompatActivity {  

    MediaRecorder RecordV;  

    MediaPlayer PlayR;  

    ImageButton BtnRecord;  

    ImageButton BtnPlay;  

    private String outputFile = null;  

    int r=0;  

    int pr=0;  

 public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_fav_qx);  

        outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myrecording.3gp";  

        BtnRecord = (ImageButton)findViewById(R.id.record);  

        BtnPlay = (ImageButton)findViewById(R.id.play);  

        RecordV = new MediaRecorder();  

        RecordV.setAudioSource(MediaRecorder.AudioSource.MIC);  

        RecordV.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  

        RecordV.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);  

        RecordV.setOutputFile(outputFile);  

 BtnRecord.setOnClickListener(new View.OnClickListener() {  

            @Override  

            public void onClick(View v) {  

                if(p==0){  

                    start(v);  

                    p=1;  

                    pr=1;  

                }else if(p==1){  

                    stop(v);  

                    p=0;  

                    pr=0;  

                }  

            }  

        });  

        BtnPlay.setOnClickListener(new View.OnClickListener() {  

            @Override  

            public void onClick(View v) {  

                if(pr==0){  

                    play(v);  

                    //p=1;  

                    pr=1;  

                }else if(pr==1){  

                    stopPlay(v);  

                    //p=0;  

                    pr=0;  

                }  

            }  

        });  

    }  

    public void start(View view){  

        try {  

            RecordV.prepare();  

            RecordV.start();  

        } catch (IllegalStateException e) {  

            e.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

        Toast.makeText(getApplicationContext(), "Start recording...",  

                Toast.LENGTH_SHORT).show();  

    }  

    public void stop(View view){  

        try {  

            RecordV.stop();  

            RecordV.release();  

            RecordV  = null;  

            Toast.makeText(getApplicationContext(), "Stop recording...",  

                    Toast.LENGTH_SHORT).show();  

        } catch (IllegalStateException e) {  

            e.printStackTrace();  

        } catch (RuntimeException e) {  

            e.printStackTrace();  

        }  

    }  

    public void play(View view) {  

        try{  

            PlayR = new MediaPlayer();  

            PlayR.setDataSource(outputFile);  

            PlayR.prepare();  

            PlayR.start();  

            Toast.makeText(getApplicationContext(), "Start play the recording...",  

                    Toast.LENGTH_SHORT).show();  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

    public void stopPlay(View view) {  

        try {  

            if (PlayR != null) {  

                PlayR.stop();  

                PlayR.release();  

                PlayR = null;  

                Toast.makeText(getApplicationContext(), "Stop playing the recording...",  

                        Toast.LENGTH_SHORT).show();  

            }  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

 }  

[/shcode]

 کد های xml م که نیازی نیست (دوتا دکمه داره دیگه):P

و دیگه بگم که اروری که داره در خط های 25 تا 27 هست ینی این کد ها:

[shcode=java]RecordV.setAudioSource(MediaRecorder.AudioSource.MIC);  

        RecordV.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  

        RecordV.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);  [/shcode]

اروری هم که میده اینه:



09-13 17:08:44.811 32007-32007/com.parvizi.mohammad.myapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.parvizi.mohammad.myapp/com.parvizi.mohammad.myapp.FavqxActivity}: java.lang.RuntimeException: setAudioSource failed.
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
                                                                                    at android.app.ActivityThread.access$700(ActivityThread.java:143)
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                    at android.os.Looper.loop(Looper.java:137)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:4960)
                                                                                    at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                    at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
                                                                                    at dalvik.system.NativeStart.main(Native Method)
                                                                                 Caused by: java.lang.RuntimeException: setAudioSource failed.
                                                                                    at android.media.MediaRecorder._setAudioSource(Native Method)
                                                                                    at android.media.MediaRecorder.setAudioSource(MediaRecorder.java:328)
                                                                                    at com.parvizi.mohammad.myapp.FavqxActivity.onCreate(FavqxActivity.java:97)
                                                                                    at android.app.Activity.performCreate(Activity.java:5203)
                                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139) 
                                                                                    at android.app.ActivityThread.access$700(ActivityThread.java:143) 
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) 
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                    at android.os.Looper.loop(Looper.java:137) 
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:4960) 
                                                                                    at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                    at java.lang.reflect.Method.invoke(Method.java:511) 
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
                                                                                    at dalvik.system.NativeStart.main(Native Method) 

و اینم کد های build.gradle.app (گفتم شاید لازم باشه بدونید برنامه با چه ورژنیه و این جور چیزا چون یه جا خوندم که ممکنه از نسخه اندروید باشه اما اونجا راهنمایی نداشت که بفهمم چیکار کنم)

[shcode=java]

apply plugin: 'com.android.application'

android {

   compileSdkVersion 23

   buildToolsVersion "23.0.1"

   defaultConfig {

       applicationId "com.parvizi.mohammad.myapp"

       minSdkVersion 15

       targetSdkVersion 23

       versionCode 1

       versionName "1.0"

   }

   buildTypes {

       release {

           minifyEnabled false

           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

       }

   }

}

dependencies {

   compile fileTree(include: ['*.jar'], dir: 'libs')

   compile 'com.android.support:recyclerview-v7:23.0.1'

   compile 'com.android.support:appcompat-v7:23.0.1'

   compile 'com.android.support:recyclerview-v7:23.0.1'

   compile 'com.android.support:support-v4:23.0.1'

   compile 'uk.co.chrisjenx:calligraphy:2.2.0'

   compile 'com.android.support:design:23.0.1'

   compile 'com.google.android.gms:play-services-appindexing:8.1.0'

}

[/shcode]

این compile هایی که دیده میشه این بالا :rolleyes::rolleyes: برای جا های دیگه برنامه استفاده شده و برای این اکتیویتی نیست اما چون حوصله نداشتم جدا کنم همشو گذاشتم یه جا. (ولش مهم نیست)

یه چیز دیگه هم بگم که نحوه کد نوشتن کلید های record  و play رو الکی نوشتم که کد به ظاهر کامل باشه. میخام بگم که مشکل اونجا نیست مشکل تو همون سه خطه که گفتم و بلافاصله بعد از باز شدن این اکتیویتی برنامه has stoped میده و به این نمیرسه که اصلا بخایم چیزی رکورد یا پخش کنیم که مشکل از کلید ها باشه

کد های منیفیست مربوط به این اکتیویتی رو هم یادم رف بگم که اینه:

[shcode=java][/shcode]

دیگه فکر نمیکنم چیزی مونده باشه که نگفته باشم اما بازم اگر به چیز دیگه ای نیاز بود بگید تا اونم بگم بهتون:blush:

بازم ممنونم از دوستان و عذر میخوام که سوال قبلیم نا مفهوم بود:heart:

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

از ارروری که داده انگار شما اکتویتی رو در مانیفست معرفی نکرده اید !

com.parvizi.mohammad.myapp.FavqxActivity

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

از ارروری که داده انگار شما اکتویتی رو در مانیفست معرفی نکرده اید !

com.parvizi.mohammad.myapp.FavqxActivity

ممنون از پاسختون:heart::heart:

اما نه دیدید که کد منیفیست رو هم قرار دادم که اینو معرفی کردم

و اروری هم که میده تو لگ کت رو هم گذاشتم که دیده بشه داره به RuntimeException: setAudioSource failed. گیر میده همون خط اول زده اینو اگه ببینید

و گفتم که مشکل از setAudioSource failed حالا چیکارش کنم:huh:

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

فکر کنم مشکل شما در تعریف مجوز های مانیفست هست

اگر گوشی یا شبیه ساز اندروید شما نسخه 6 هست باید مجوز ها به شکل دیگه ای تعریف بشه مثل زیر


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

فکر کنم مشکل شما در تعریف مجوز های مانیفست هست

اگر گوشی یا شبیه ساز اندروید شما نسخه 6 هست باید مجوز ها به شکل دیگه ای تعریف بشه مثل زیر


ممنون از پاسخ تون :heart:

اره فکر میکنم برا همین باید باشه اما من یاد ندارم چیکارش کنم

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

من برای این برنامه چی باید بزارم جاش

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

ینی واقعان من باید اینقد بدشانس باشم که مشکلی تو برنامم درست شه که هیچ کس ندونه چیه مشکلش:huh:

اونم تو اولین برنامم:-/

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

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

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

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

[shcode=java]

       android:minSdkVersion="15"

       android:targetSdkVersion="23"/>

   

   [/shcode]

خوشبختانه اون مشکل حل شد اما یه مشکل دیگه درست شد که اونو باز یکم روش فکر کنم و سرچ کنم اگه نشد در قالب یه سوال دیگه میپرسم

ممنونم ازتون:heart::heart:

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

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

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

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

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

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

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

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

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

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