2016-11-22 159 views
0

我有一個應用程序完全用Android Studio開發。我需要創建第二個應用程序,這個我想用phonegapp來完成。這兩個應用程序是彼此相關的...所以理想情況下,我想將它們結合在同一個應用程序中...通過結合,我並不意味着它們需要一起工作。我希望他們能夠一起下載(作爲同一個應用程序),並能夠在應用程序內從一個到另一個......所以他們可以完全是兩個單獨的應用程序,但用戶會認爲它只有一個應用程序。我希望我能夠很好地理解,混合應用程序使用帶Cordova插件的麥克風。有一段時間我試着將它放在iframe中,但我們會失去調用谷歌原生Android語音識別的麥克風,將它轉換爲文本並傳遞給文本編輯。我可以將這兩個應用程序(本地和混合)組合到一個應用程序中嗎?

所以我的問題是:

  1. 我可以結合這兩個應用程序(本地和混合型)合併爲一個應用程序?
  2. 會和語音識別的麥克風轉換爲文本的工作以及在兩種情況下?
+1

我懷疑你能做到。它是每個應用程序的沙箱,但在您的情況下,您不只是想在兩個應用程序之間進行通信,而是使用不同的技術在同一個沙箱下運行。除非,你想要經歷以下幾點:在Phonegap中生成aar文件,並將其用作android應用程序中的庫 - 這裏http://imcodebased.com/android-share-code-multiple-applications/ – codebased

回答

0

1)沒有什麼能阻止你有兩個應用程序作爲一個(除了下載部分)。他們可以使用專用Intent「彼此說話」,並使用ContentProvider s共享數據。您必須注意安裝了一個應用程序而另一個應用程序未安裝的情況。

2)我沒有看到在這種情況下所涉及的傳聲器任何特別的問題。

不過,如果我是你,我會選擇使用單一的應用程序,如果這是可能的。但我不確定這種實現有什麼限制。

1

是的,這是一個痛苦位設立的,但我有它的工作。我沒有使用PhoneGap,但是我使用Construct和Cordova插件,所以它應該是一個類似的設置。

首先,我把Cordova生成的所有網頁文件放到assets目錄(如果你沒有資產目錄,你可以在main目錄中創建一個)。然後我用一個WebView顯示的內容:

public class CordovaActivity extends AppCompatActivity { 

    private WebView mWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_cordova); 

     mWebView = (WebView) findViewById(R.id.content); 

     WebSettings settings = mWebView.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     settings.setDomStorageEnabled(true); 

     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
      settings.setAllowUniversalAccessFromFileURLs(true); 
     } 

     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
      settings.setMediaPlaybackRequiresUserGesture(false); 
     } 

     mWebView.loadUrl("file:///android_asset/www/index.html"); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if(mWebView != null) { 
      mWebView.resumeTimers(); 
      mWebView.onResume(); 
     } 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     if(mWebView != null) { 
      mWebView.pauseTimers(); 
      mWebView.onPause(); 
     } 
    } 

} 

setJavaScriptEnabled()setDomStorageEnabled()setAllowUniversalAccessFromFileURLs()設置都必須設置爲true或內容將不會加載。需要最後的設置setMediaPlaybackRequiresUserGesture()才能播放音頻。

這將是一個多一點的工作,以獲得科爾多瓦內容與應用程序的其它部分雖然互動;您必須使用JavaScriptInterface才能這樣做。

相關問題