2014-10-10 2 views
0

문제가 있습니다. 활동이나 mp4 파일로 보낸 문자열의 음성을 합성하는 mp3 파일을 보내는 서비스를 만들어야합니다. mp3 파일과 mp4 파일을 만들 수 있습니다. 나 또한 공유 메뉴에서 그들 중 하나를 설정하는 방법을 알고.공유 메뉴에서 선택한 앱에 따라 다른 파일을 보내는 방법은 무엇입니까?

내 문제는 mp3 및 mp4 파일을 처리 할 수있는 모든 응용 프로그램을보고 선택한 응용 프로그램에 올바른 파일을 보내고 싶다는 것입니다.

public void setShareContent(MenuItem item, ShareActionProvider mShareActionProvider) { 
     this.setActionMenu(item,mShareActionProvider); 
     Intent mIntent = new Intent(); 
     mIntent.setAction(Intent.ACTION_SEND); 
     Uri uri = Uri.parse("file:///"+Environment.getExternalStorageDirectory()+"/sounds/hello.mp3"); 

     mIntent.putExtra(Intent.EXTRA_STREAM,uri); 
     mIntent.setType("audio/mp3"); 
     mShareActionProvider.setShareIntent(mIntent); 
    } 

    private void setActionMenu(MenuItem item, ShareActionProvider mShareActionProvider) { 
     mShareActionProvider = (ShareActionProvider) item.getActionProvider(); 
    } 

그리고 내 활동에서 내 청취자 :

btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       message = text.getText().toString(); 
       myHashReader = new HashMap<String, String>(); 
       myHashReader.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, message); 

       String exStroragePath = Environment.getExternalStorageDirectory().getAbsolutePath(); 

       File tmpPath = new File(exStroragePath + "/sounds/"); 
       tmpPath.mkdirs(); 

       String tmpFileName = "hello.mp3"; 

       tmpDestFile = tmpPath.getAbsolutePath() + "/" + tmpFileName; 
       new MySpeech(MyActivity.this, message, tmpDestFile); 
       myService.setShareContent(item, mShareActionProvider); 
      } 
     }); 

내가 일 차단하고 있습니다 ...

답변

0

CREAT이 같은 츄 뭔가 : 여기

내 코드입니다

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); 
      intent.setType("mp3/*"); 

      Intent musicIntent = new Intent(android.provider....); 

      Intent chooser = new Intent(Intent.ACTION_CHOOSER); 
      chooser.putExtra(Intent.EXTRA_INTENT, musicIntent); 
      chooser.putExtra(Intent.EXTRA_TITLE, "Select from:"); 

      Intent[] intentArray = { musicIntent }; 
      chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray); 
      startActivityForResult(chooser, REQUEST_PIC); 
+0

이것은 내가 찾고 정확히 것 같다하지만 난 이해가 안 돼요 라인 : Intent musicIntent = 새로운 인 텐트 (android.provider ....); 그 생성자에 무엇을 넣을까요? 감사합니다 – Quentin

+0

음악 제공 업체가 무엇인지 확실하지 않습니다 :) 이미지에 대한 제안 사항이 있는지 보려면 ctrl + space를 사용하십시오. android.provider.MediaStore.ACTION_IMAGE_CAPTURE – SpyZip

1

It fina lly 작품! 귀하의 코드는 나에게 많은 도움이되었습니다,하지만 당신은 할 얘기 내가하지 않았어, 여기 내 코드입니다 :

public void setShareContent(MenuItem item, ShareActionProvider mShareActionProvider) { 
        this.setActionMenu(item,mShareActionProvider); 
        Intent mIntent = new Intent(); 
        Uri uri = Uri.parse("file:///"+Environment.getExternalStorageDirectory()+"/sounds/hello.mp3"); 

        mIntent.putExtra(Intent.EXTRA_STREAM,uri); 
        mIntent.setType("audio/mp3"); 

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); 
        intent.setType("mp3/*"); 

        Intent chooser = new Intent(Intent.ACTION_CHOOSER); 
        chooser.putExtra(Intent.EXTRA_TITLE, "Select from : "); 
        chooser.putExtra(Intent.EXTRA_INTENT, mIntent); 

        mShareActionProvider.setShareIntent(chooser); 
       } 

       private void setActionMenu(MenuItem item, ShareActionProvider mShareActionProvider) { 
        mShareActionProvider = (ShareActionProvider) item.getActionProvider(); 
       } 
관련 문제