2016-10-08 14 views
-1

WebViewを使用してこの入力を押してから録音した後、送信ボタンを押すとサウンドファイルがサーバにアップロードされます。Android、WebViewを使用して録音音を開く方法

Image: <input type="file" name="imagefile" id="imagefile" required> 
Sound: <input type="file" name="recordfile" id="recordfile" required> 

答えて

0

これは、すべてのAndroidのバージョン

WebView mWebView = (WebView) findViewById(R.id.activity_main_webview); 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://example.com"); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setSupportZoom(false); 
    webSettings.setAllowFileAccess(true); 
    webSettings.setAllowContentAccess(true); 
    webSettings.setLoadWithOverviewMode(true); 
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    mWebView.setScrollbarFadingEnabled(false); 
    mWebView.getSettings().setBuiltInZoomControls(true); 
    mWebView.getSettings().setPluginState(WebSettings.PluginState.ON); 


    mWebView.setWebChromeClient(new WebChromeClient() 
    { 
     // For 3.0+ Devices (Start) 
     // onActivityResult attached before constructor 
     protected void openFileChooser(ValueCallback uploadMsg, String acceptType) 
     { 
      // Update message 
      // Update message 
      mUploadMessage = uploadMsg; 

      try{ 

      // Create AndroidExampleFolder at sdcard 

      File imageStorageDir = new File(
        Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES) 
        , "AndroidExampleFolder"); 

      if (!imageStorageDir.exists()) { 
       // Create AndroidExampleFolder at sdcard 
       imageStorageDir.mkdirs(); 
       } 

      // Create camera captured image file path and name 
      File file = new File(
        imageStorageDir + File.separator + "IMG_" 
        + String.valueOf(System.currentTimeMillis()) 
      + ".jpg"); 

      mCapturedImageURI = Uri.fromFile(file); 

      // Camera capture image intent 
      final Intent captureIntent = new Intent(
        android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

      captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 

      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("image/*"); 

      // Create file chooser intent 
      Intent chooserIntent = Intent.createChooser(i, "Image Chooser"); 

      // Set camera intent to file chooser 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS 
        , new Parcelable[] { captureIntent }); 

      // On select image call onActivityResult method of activity 
      startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE); 

      } 
      catch(Exception e){ 
      Toast.makeText(getBaseContext(), "Exception:"+e, 
        Toast.LENGTH_LONG).show(); 
      } 

     } 


     // For Lollipop 5.0+ Devices 

     public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) 
     { 
      // Double check that we don't have any existing callbacks 
      if (mFilePathCallback != null) { 
       mFilePathCallback.onReceiveValue(null); 
      } 
      mFilePathCallback = filePathCallback; 

      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

      if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
       // Create the File where the photo should go 
       File photoFile = null; 
       try { 
        photoFile = createImageFile(); 
        takePictureIntent.putExtra("PhotoPath", mCameraPhotoPath); 
       } catch (IOException ex) { 
        // Error occurred while creating the File 
        //Log.e(TAG, "Unable to create Image File", ex); 
       } 

       // Continue only if the File was successfully created 
       if (photoFile != null) { 
        mCameraPhotoPath = "file:" + photoFile.getAbsolutePath(); 
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, 
          Uri.fromFile(photoFile)); 
       } else { 
        takePictureIntent = null; 
       } 
      } 

      Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT); 
      contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE); 
      contentSelectionIntent.setType("image/*"); 
      contentSelectionIntent.putExtra("crop", "true"); 
      contentSelectionIntent.putExtra("scale", true); 
      contentSelectionIntent.putExtra("outputX", 40); 
      contentSelectionIntent.putExtra("outputY", 40); 
      contentSelectionIntent.putExtra("aspectX", 1); 
      contentSelectionIntent.putExtra("aspectY", 1); 
      contentSelectionIntent.putExtra("return-data", true); 

      Intent[] intentArray; 
      if (takePictureIntent != null) { 
       intentArray = new Intent[]{takePictureIntent}; 
      } else { 
       intentArray = new Intent[0]; 
      } 

      Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); 
      chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent); 
      chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser"); 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray); 


      startActivityForResult(chooserIntent, 1); 

      return true; 
     } 

     //For Android 4.1 only 
     protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) 
     { 
      mUploadMessage = uploadMsg; 
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
      intent.addCategory(Intent.CATEGORY_OPENABLE); 
      intent.setType("image/*"); 
      startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE); 
     } 

     protected void openFileChooser(ValueCallback<Uri> uploadMsg) 
     { 
      mUploadMessage = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("image/*"); 
      startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE); 
     } 
    }); 
のWebViewによって開かれたカメラとサウンドレコーダーのコードです
関連する問題