簡體   English   中英

在更新(編輯)其不使用舊音頻文件名時

[英]while updating(editing) its not taking the old audio file name

具有一個文本和音頻(錄音)並將名稱和路徑保存在db。中,同時單擊音頻也必須播放的名稱。但是在編輯時,如果我想單獨更改名稱,它將不會使用舊文件名各自的一個,它使那個為空。

如果人們不更新音頻,如何獲取舊音頻文件名(錄音)

audioactivity.java

private void saveState() {
      String audioname = et1.getText().toString();

      String audiofilename = gfilename;
      String audiocount = et2.getText().toString();

        if(audiocount.equals("")){
            audiocount ="1"; 
        }


      SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

        String audiodate = sdf.format(new Date());


      if (mRowId == null || mRowId.longValue() == 0)
      {

        long id = mDbHelper.createProject4(audioname, audiofilename, audiocount, audiodate);
          if (id > 0) {
              mRowId = id;
          }
      } else {
          audiofilename=gfilename;
          mDbHelper.updateProject4(mRowId, audioname, audiofilename, audiocount,audiodate);
      }


  }


  public View.OnClickListener btnClick = new View.OnClickListener() 
  {
    @Override
        public void onClick(View v) {
            switch(v.getId()){
                case R.id.btnStart:{
                    AppLog.logString("Start Recording");

                    enableButtons(true);
                    startRecording();

                    break;
                }
                case R.id.btnstop:{
                    AppLog.logString("Start Recording");

                    enableButtons(false);
                    stopRecording();

                    break;

                }

            }
        }

    };

    public MediaRecorder.OnErrorListener errorListener = new MediaRecorder.OnErrorListener() {
        @Override
        public void onError(MediaRecorder mr, int what, int extra) {
            AppLog.logString("Error: " + what + ", " + extra);
        }
    };

    public MediaRecorder.OnInfoListener infoListener = new MediaRecorder.OnInfoListener() {
        @Override
        public void onInfo(MediaRecorder mr, int what, int extra) {
            AppLog.logString("Warning: " + what + ", " + extra);
        }
    };


    public void setButtonHandlers() {
        ((Button)findViewById(R.id.btnStart)).setOnClickListener(btnClick);
      ((Button)findViewById(R.id.btnstop)).setOnClickListener(btnClick);

    }

    public void enableButton(int id,boolean isEnable){
        ((Button)findViewById(id)).setEnabled(isEnable);
    }

    public void enableButtons(boolean isRecording) {
        enableButton(R.id.btnStart,!isRecording);           
        enableButton(R.id.btnstop,isRecording);
    }


    @SuppressLint("NewApi")
    private void startRecording(){
        //displayFormatDialog();

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        String formats[] = {"MPEG 4", "3GPP", "AMR"};

        builder.setTitle(getString(R.string.choose_format_title))
               .setSingleChoiceItems(formats, currentFormat, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    currentFormat = which;


                    dialog.dismiss();





        recorder = new MediaRecorder();         
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
        recorder.setOutputFormat(output_formats[currentFormat]);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setOutputFile(getFilename());          
        //recorder.setOnErrorListener(errorListener);
        //recorder.setOnInfoListener(infoListener);

        try {
            recorder.prepare();
            recorder.start();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
                   }
               })
               .show();
    }



private void stopRecording(){
    if(null != recorder)
    {
        //mDbHelper.updateProject4FileName(mRowId, gfilename); 
        recorder.stop();
        recorder.reset();
        recorder.release();             
        recorder = null;
        }
    else
    {
        recorder.stop();
        recorder.release();     
    }
}


    public String getFilename(){

        String filepath = Environment.getExternalStorageDirectory().getPath();
        File file = new File(filepath,AUDIO_RECORDER_FOLDER);

        if(!file.exists()){
            file.mkdirs();
        }
        gfilename = (file.getAbsolutePath() + "/" + System.currentTimeMillis() + file_exts[currentFormat]);
        return (gfilename);
    }


    @Override
    public void onCompletion (MediaPlayer arg0) 
    {               
    }

  public void  playSong(String gfilename){
      // Play song
         try
         {
          mp.reset();
          mp.setDataSource(gfilename);
          mp.prepare();
          mp.start();

          // Changing Button Image to pause image
          btnPlay.setImageResource(R.drawable.btn_pause);


      } catch (IllegalArgumentException e) {
          e.printStackTrace();
      } catch (IllegalStateException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
  }

我還檢查了調試,如果我們沒有更新記錄,那么它只會將該記錄替換為null。

在這里我還附上了我的數據庫更新代碼

public boolean updateProject4(long _id, String audioname, String audiofilename,String audiocount,String audiodate) {
                            ContentValues args = new ContentValues();
                            args.put(CATEGORY_COLUMN_AUDIONAME, audioname );
                            args.put(CATEGORY_COLUMN_AUDIOFILENAME, audiofilename );
                            args.put(CATEGORY_COLUMN_AUDIOCOUNT, audiocount );
                            args.put(CATEGORY_COLUMN_AUDIODATE, audiodate );
                            return mDb.update(DATABASE_TABLE_AUDIOPRAYER, args, CATEGORY_COLUMN_ID4 + "=" + _id,  null) > 0;
                        }

其實我為我的問題鋪平了道路。

如果在更新時我的文件名變為空,則想從數據庫獲取文件

private void saveState() {
      String audioname = et1.getText().toString();

      String audiofilename = gfilename;
      String audiocount = et2.getText().toString();

        if(audiocount.equals("")){
            audiocount ="1"; 
        }






      SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

        String audiodate = sdf.format(new Date());

      //String reqname= spin.getSelectedItem().toString();
      //Log.i(" save state mathod "," values are "+title+Desc+Body+reqname); 

      if (mRowId == null || mRowId.longValue() == 0)
      {

        long id = mDbHelper.createProject4(audioname, audiofilename, audiocount, audiodate);
          if (id > 0) {
              mRowId = id;
          }
      } else {


          if(audiofilename.equals("")){
              Cursor filename = mDbHelper.fetchProject4FileName(mRowId, audiofilename);
               startManagingCursor(filename);
               gfilename =filename.getString(filename.getColumnIndexOrThrow(GinfyDbAdapter.CATEGORY_COLUMN_AUDIOFILENAME));
            //mDbHelper.fetchProject4FileName(mRowId, audiofilename);
            audiofilename = gfilename;
            mDbHelper.updateProject4(mRowId, audioname, audiofilename, audiocount,audiodate);
        }
          else
          {
              audiofilename =  gfilename;
              mDbHelper.updateProject4(mRowId, audioname, audiofilename, audiocount,audiodate);
          }




      }

我們必須從db獲取文件名,並檢查audiofilename是否為null意味着,我們必須設置較舊的文件名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM