Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 6

0
votes
answers
51 views
+10

Azure通知中心在重新安裝應用程序時丟失訂閱

0

Azure通知中心出現問題。Azure通知中心在重新安裝應用程序時丟失訂閱

當我的應用程序第一次啓動時,通知正常工作,但是何時由Visual Studio重建應用程序,通知停止工作,並且不調用帶有IntentFilters的Android服務。

對於通知再次運行,我需要卸載Android中的應用程序,並再次運行Visual Studio。

有人有關於這個問題的一些想法?

我的擔心是:如果我將應用程序發送到GooglePlay,通知將在更新後繼續工作?

如果有人知道如何調用服務以獲取新的InstallationId,那麼始終要啓動該應用程序,我將知道如何解決問題。

有人可以幫助我嗎?

我沒有遵循教程: https://www.youtube.com/watch?v=le2lDY22xwM&t=3312s

沙发
0
1

如果我發送應用GOOGLEPLAY,通知將繼續進行更新後的工作?

沒有必要擔心,參照本document,當您使用Azure Notification Hub,它採用Android GCM發送推notificcation。你可以看到我的回答關於Android using Firebase Cloud Messaging not receiving message

正如Official document說:

在您的應用程序的初始啓動時,FCM SDK生成的客戶端應用程序實例的註冊標記。如果您想要定位單個設備或創建設備組,則需要訪問此令牌。

說明關於Token

由GCM連接服務器的客戶端應用程序,允許它接收消息發出一個ID。

當你是一個重建被Visual Studio您的令牌應用程序被改變,但它並沒有引發OnTokenRefresh方法,所以在這個時候在你的應用程序中的Token無效。這就是爲什麼你的應用程序無法接收消息。可以參考Sending Push Notifications from Azure Mobile AppsImplement the Firebase Instance ID Service

當您的應用程序得到更新時,它會自動觸發OnTokenRefresh方法,因此您的應用程序仍然可以接收消息。

+0

謝謝,約克申! :d –

0
votes
answers
49 views
+10

如何檢查路徑是應用程序的緩存路徑?

0

假設我有一些Stinrg變量包含一些路徑。如何檢查路徑是應用程序的緩存路徑?

是否有可能在Android中檢查此路徑是應用的緩存路徑還是私有應用的路徑?

沙发
0
2

您可以通過

Context.getCacheDir()

getCacheDir() 返回到文件系統中的專用緩存目錄的絕對路徑對返回的值進行比較String值。

+0

看起來像是完美的答案。 –

+0

'getFilesDir()。getAbsolutePath()' –

0
votes
answers
36 views
+10

反應原生:ADB問題創建反應原生應用程序

0

運行adb時出錯:無法安裝C: Users Username.expo android-apk-cache Exponent-2.0.0.apk:錯誤:必須指定封裝大小或APK文件反應原生:ADB問題創建反應原生應用程序

這是我的錯誤。我有Andriod模擬器運行在API 25上。Java 1.8

任何人都可以幫助我解決這個問題嗎?我有反應,本機init和運行android正常運行。但不創建 - 反應 - 原生應用程序

沙发
0
0

這看起來像世博apk是不完全下載,它試圖安裝一個損壞的apk。幾種方法來解決這個問題。

  • 刪除.expo/Android的APK-緩存文件夾中的個人文件夾,然後重試
  • 手動下載並安裝APK世博(右下角)
+1

謝謝彼得。如果有人不知道如何在仿真器中安裝Expo,請嘗試命令'adb install path/to/expo.apk'(您可以搜索並從網上下載,搜索「」用於PC的博覽會「」,http:/ /downloadapk.net/LRA-EXPO.html)..感謝@Peter Lazar分享這些信息。 –

0
votes
answers
56 views
+10

致命異常:com.squareup.okhttp.Cache中的main java.lang.ExceptionInInitializerError。 <init>(Cache.java:172)

-1

我正在使用「compile」com.daimajia.slider:library:[email protected]'「庫來通過將圖像的URL傳遞給它來顯示圖像引發錯誤。致命異常:com.squareup.okhttp.Cache中的main java.lang.ExceptionInInitializerError。 <init>(Cache.java:172)

ArrayList varible包含多圖像的url。

https://www.android-examples.com/android-multiple-auto-image-slider-example-tutorial-using-online-url/

app.gradle

defaultConfig { 
     applicationId "com.google.tho.oe" 
     minSdkVersion 16 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 

compile 'com.squareup.okhttp:okhttp:2.5.0' 
compile 'com.squareup.picasso:picasso:2.5.2' 
compile 'com.github.bumptech.glide:glide:3.8.0' 
compile 'com.nineoldandroids:library:2.4.0' 
compile 'com.daimajia.slider:library:[email protected]' 

一些從類主要幹線

private ArrayList<String> collecter = new ArrayList<>(); 
sliderLayout = (SliderLayout)findViewById(R.id.slider); 

TextSliderView textSliderView = new TextSliderView(Main2Activity.this); 
     for (int i = 0; i<collecter.size();i++) { 

      textSliderView 
        .description(collecter.get(i)) 
        .image(collecter.get(i).toString()) 
        .setScaleType(BaseSliderView.ScaleType.Fit) 
        .setOnSliderClickListener(Main2Activity.this); 
      textSliderView.bundle(new Bundle()); 
      textSliderView.getBundle() 
        .putString("extra", collecter.get(i)); 
      Toast.makeText(getApplicationContext(),"HI Thofiq"+collecter.get(i),Toast.LENGTH_LONG).show(); 

     } 
     sliderLayout.addSlider(textSliderView); 
     sliderLayout.setPresetTransformer(SliderLayout.Transformer.Accordion); 
     sliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom); 
     sliderLayout.setCustomAnimation(new DescriptionAnimation()); 
     sliderLayout.setDuration(3000); 
     sliderLayout.addOnPageChangeListener(this); 

錯誤:

11-11 21:25:30.045 18458-18458/com.google.tho.oe E/AndroidRuntime: FATAL EXCEPTION: main 
                     java.lang.ExceptionInInitializerError 
                      at com.squareup.okhttp.Cache.<init>(Cache.java:172) 
                      at com.squareup.okhttp.Cache.<init>(Cache.java:168) 
                      at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:78) 
                      at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:55) 
                      at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:45) 
                      at com.squareup.picasso.Utils$OkHttpLoaderCreator.create(Utils.java:424) 
                      at com.squareup.picasso.Utils.createDefaultDownloader(Utils.java:250) 
                      at com.squareup.picasso.Picasso$Builder.build(Picasso.java:832) 
                      at com.squareup.picasso.Picasso.with(Picasso.java:662) 
                      at com.daimajia.slider.library.SliderTypes.BaseSliderView.bindEventAndShow(BaseSliderView.java:210) 
                      at com.daimajia.slider.library.SliderTypes.TextSliderView.getView(TextSliderView.java:25) 
                      at com.daimajia.slider.library.SliderAdapter.instantiateItem(SliderAdapter.java:81) 
                      at com.daimajia.slider.library.Tricks.InfinitePagerAdapter.instantiateItem(InfinitePagerAdapter.java:54) 
                      at com.daimajia.slider.library.Tricks.ViewPagerEx.addNewItem(ViewPagerEx.java:848) 
                      at com.daimajia.slider.library.Tricks.ViewPagerEx.populate(ViewPagerEx.java:998) 
                      at com.daimajia.slider.library.Tricks.ViewPagerEx.populate(ViewPagerEx.java:930) 
                      at com.daimajia.slider.library.Tricks.ViewPagerEx.onMeasure(ViewPagerEx.java:1453) 
                      at android.view.View.measure(View.java:15371) 
                      at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) 
                      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) 
                      at android.view.View.measure(View.java:15371) 
                      at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) 
                      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) 
                      at android.view.View.measure(View.java:15371) 
                      at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) 
                      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) 
                      at android.view.View.measure(View.java:15371) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876) 
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
                      at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) 
                      at android.view.View.measure(View.java:15371) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876) 
                      at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:393) 
                      at android.view.View.measure(View.java:15371) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876) 
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
                      at android.view.View.measure(View.java:15371) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876) 
                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396) 
                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) 
                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 
                      at android.view.View.measure(View.java:15371) 
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876) 
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
                      at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2423) 
                      at android.view.View.measure(View.java:15371) 
                      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2011) 
                      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1250) 
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1425) 
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1143) 
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4674) 
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
                      at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
                      at android.view.Choreographer.doFrame(Choreographer.java:525) 
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
                      at android.os.Handler.handleCallback(Handler.java:615) 
                      at android.os.Handler.dispatchMessage(Handler.java:92) 
                     at android.os 
+1

這看起來不像完整的堆棧跟蹤。應該有一個或多個「原因」部分,這對理解實際問題至關重要。 –

+0

閱讀https://github.com/square/okhttp/issues/2228 –

+0

似乎不是基於例外的相同問題。但是我們需要完整的堆棧跟蹤 –

沙发
0
0

嘗試刪除compile 'com.squareup.okhttp:okhttp:2.5.0'這個依賴關係。這可能會導致錯誤,如果您的圖像加載器庫使用不同版本的okhttp。你必須添加下一個依賴

dependencies { 
    compile "com.android.support:support-v4:+" 
    compile 'com.squareup.picasso:picasso:2.3.2' 
    compile 'com.nineoldandroids:library:2.4.0' 
    compile 'com.daimajia.slider:library:[email protected]' 

}

,並在例子中使用庫的版本一樣,因爲不兼容的新版本,是可能的。 ,看看你有沒有忘記在清單

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
... 

添加權限,如果你有2種或更多okhttp情況也有可能發生錯誤。所以檢查它。 並且由IntelliJ Amiya編寫,你可以在githab上看到這個問題https://github.com/square/okhttp/issues/2228 也許在那裏給出的解決方案會對你有所幫助,但是對於okhttp來說,你應該改變daimajia.slider庫中的代碼。

0
votes
answers
52 views
+10

ObjectOutputStream中的布爾arraylist

0

我想在本地文件中存儲布爾arraylist並在onCreate()中加載值。 我使用ObjectOutputStream中的布爾arraylist

public void saveBoolean(String fileName, ArrayList<Boolean> list){ 
    File file = new File(getDir("data", MODE_PRIVATE), fileName); 
    ObjectOutputStream outputStream = null; 
    try { 
     outputStream = new ObjectOutputStream(new FileOutputStream(file)); 
    } catch (IOException e) { 
     // 
    } 
    try { 
     outputStream.writeObject(list); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     outputStream.flush(); 
    } catch (IOException e) { 
     // 
    } 
    try { 
     outputStream.close(); 
    } catch (IOException e) { 
     // 
    } 
} 

private ArrayList<Boolean> getSavedBooleanList(String fileName) { 
    ArrayList<Boolean> savedArrayList = new ArrayList<>(); 

    try { 
     File file = new File(getDir("data", MODE_PRIVATE), fileName); 
     ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file)); 
     savedArrayList = (ArrayList<Boolean>) ois.readObject(); 
     ois.close(); 
    } catch (IOException | ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 

    return savedArrayList; 
} 

但它調用NullPointerExcpetion時試圖初始化自定義視圖列表視圖。我也保存和加載字符串和整數列表像這樣,字符串列表被加載,但整數和布爾列表未被初始化,所以長度爲0,我的代碼加載值在列表視圖位置,所以它調用錯誤,因爲長度爲0,而inxed是爲示例2.是否有任何方法來保存/加載整數和布爾列表文件或我必須在保存前將布爾值和整數轉換爲字符串? 感謝您的回覆。

+0

你可以將其保存在共享偏好。檢查此:(https://stackoverflow.com/questions/27159926/how-to-add-a-boolean-array-in-shared-preferences-in-android) –

+0

您的代碼正在模擬器上工作@Martin –

+0

爲什麼這個被標記爲重複? –

沙发
0
0

替代你的方法共享偏好是節省

在這裏你去:

private void saveToSharedPreference(ArrayList<Boolean> arrayList) { 
    Gson gson = new Gson(); 
    SharedPreferences sharedPreferences = this.getSharedPreferences("Test", Context.MODE_PRIVATE); 
    sharedPreferences.edit().putString("ArrayList", gson.toJson(arrayList)).commit(); 
} 

private ArrayList<Boolean> getSharedPreference() { 
    Gson gson = new Gson(); 
    SharedPreferences sharedPreferences = this.getSharedPreferences("Test", Context.MODE_PRIVATE); 
    String booleanString = sharedPreferences.getString("ArrayList", null); 
    TypeToken<ArrayList<Boolean>> typeToken = new TypeToken<ArrayList<Boolean>>() { 
    }; 
    ArrayList<Boolean> booleen = gson.fromJson(booleanString, typeToken.getType()); 
    return booleen; 
} 
+0

只是快速注意:編譯'com.google.code.gson:gson:2.8.2'必須被添加,但它的工作原理,謝謝 –

0
votes
answers
58 views
+10

使用DistanceTo時出現的問題(距離不正確)

-1

我正在嘗試計算我的地理位置點和跟蹤這兩者之間的折線的標記之間的距離,但問題是當我輸出結果並且它給了我一個滿足感時距離(1.125405E7)代替(例如)1,250米。使用DistanceTo時出現的問題(距離不正確)

這是我的代碼

//Gets the latitude & longitude of my Geolocation 

Location location = new Location("A"); 
       location.setLatitude(location.getLatitude()); 
       location.setLongitude(location.getLongitude()); 

//Gets the location of a marker/Polyline which i put using onMapLongCliclistener 

       Location locationb = new Location("B"); 
       locationb.setLatitude(latLng.latitude); 
       locationb.setLongitude(latLng.longitude); 

       //Calculates the distance between Geolocation/Marker 

       double distance=locationb.distanceTo(location); 

       String distancia = String.valueOf(distance); 
       Toast.makeText(MapsActivity.this,distancia, 
Toast.LENGTH_SHORT).show(); 

任何提示或解決方案?
非常感謝!

+0

要設置緯度'A'的經度兩次,從未設置的緯度。這是你的真實代碼還是錯誤? –

+0

@MarkusKauppinen固定,仍然給我很大的距離 – QuickAccount123

+0

你能提供兩個位置的實際座標和適當的距離結果嗎? –

沙发
0
0

從你的代碼行號3'location.setLongitude(location.getLatitude());'是錯誤的。您正在設置經度而不是緯度。

+0

已經修復,檢查更新後的代碼。 – QuickAccount123

板凳
0
0

代碼:

double distance = SphericalUtil.computeDistanceBetween(new LatLng(location.getLatitude(),location.getLongitude()),new 
    LatLng(latLng.latitude,latLng.longitude)); 
    String distanceC = String.valueOf(distance); 
    txtDistancia.setText(new DecimalFormat("##.##").format(distanceC)+" "+"mts"); 
0
votes
answers
49 views
+10

片段錯誤:XML二進制文件:錯誤膨脹片段類

-1

任何人都可以幫助我找到此代碼中的錯誤,因爲它說,它不能膨脹主要活動中的片段,順便說一下,我是新來的android。我試圖將代碼的膨脹線更改爲onCreate函數中的最後一個,但它什麼也沒做。片段錯誤:XML二進制文件:錯誤膨脹片段類

下面是活動的代碼:

package com.voicenoteinc.tictactou 

import android.graphics.Color 
import android.support.v7.app.AppCompatActivity 
import android.os.Bundle 
import android.support.v4.app.FragmentActivity 
import android.support.v4.app.Fragment 
import android.view.View 
import android.widget.Button 
import kotlinx.android.synthetic.main.fragment_test.* 

class MainActivity : AppCompatActivity() { 
    var tstFragment:TestFragment? = null 
    val manager = supportFragmentManager 
    val FRAGMENT_TAG = "fragment_tag" 
    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 

     if (manager.findFragmentByTag(FRAGMENT_TAG) != null) { 
      tstFragment = manager.findFragmentByTag(FRAGMENT_TAG) as TestFragment 
     } 
     if (tstFragment == null) { 
      tstFragment = TestFragment() 
      manager.beginTransaction().add(tstFragment, FRAGMENT_TAG).commit() 
     } 

    } 
} 

的XML活動:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    tools:context="com.voicenoteinc.tictactou.MainActivity"> 

    <fragment 
     android:id="@+id/fragment" 
     android:name="com.voicenoteinc.tictactou.TestFragment" 
     android:tag="fragment_tag" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     tools:layout="@layout/fragment_test" /> 
</LinearLayout> 

片段類:

package com.voicenoteinc.tictactou 

import android.content.Context 
import android.graphics.Color 
import android.net.Uri 
import android.os.Bundle 
import android.support.v4.app.Fragment 
import android.view.LayoutInflater 
import android.view.View 
import android.view.ViewGroup 
import kotlinx.android.synthetic.main.fragment_test.* 

class TestFragment : Fragment() { 
    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     retainInstance = true 
    } 

    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, 
           savedInstanceState: Bundle?): View? { 
     bu.setOnClickListener { bu.setBackgroundColor(Color.CYAN) } 
     return inflater!!.inflate(R.layout.fragment_test, container, false) 
    } 
}// Required empty public constructor 
+0

你可以張貼錯誤 – MadScientist

+1

大概'bu'是空 –

+0

把你的logcat的。 – Deepa

沙发
0
0

有兩種方法的Fragment增加一個Activity

  1. 靜態添加像你在這裏做:

    <fragment 
        android:id="@+id/fragment" 
        android:name="com.voicenoteinc.tictactou.TestFragment" 
        android:tag="fragment_tag" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        tools:layout="@layout/fragment_test" /> 
    
  2. 動態地將它添加到一個ViewGroup這樣的:

    ExampleFragment fragment = new ExampleFragment(); 
    fragmentTransaction.add(R.id.fragment_container, fragment); 
    fragmentTransaction.commit(); 
    

看來你已經嘗試做在這裏。所以,你可以安全地刪除所有這些代碼假設你想要靜態添加:

// Remove all this code 
if (manager.findFragmentByTag(FRAGMENT_TAG) != null) { 
    tstFragment = manager.findFragmentByTag(FRAGMENT_TAG) as TestFragment 
} 
if (tstFragment == null) { 
    tstFragment = TestFragment() 
    manager.beginTransaction().add(tstFragment, FRAGMENT_TAG).commit() 
} 

詳細解釋hereAdding a fragment to an activity

0
votes
answers
56 views
+10

Android(Xamarin)通過rtsp從IP Cam流視頻://

0

更新:我通過使用vlc-sdk for android解決了這個問題。Android(Xamarin)通過rtsp從IP Cam流視頻://

所以我面臨這個問題,我有一個URL從IP攝像機提供流。

這件事情就像

RTSP://192.168.x.xxx:8554/BWC

注:有喜歡的MP4沒有擴展名或.mov

我試着我的電腦上的VLC播放器中的URL以及Android應用程序「rtsp player」都可以使用。他們都向我展示了來自凸輪的流。

現在我需要編寫一個應用程序,它也顯示來自凸輪的流,我必須用Xamarin編寫它。

我有以下代碼:

[Activity(Label = "StreamActivity", ScreenOrientation = ScreenOrientation.Portrait, HardwareAccelerated = true, Theme = "@style/Theme.AppCompat.Light.NoActionBar")] 
public class StreamActivity : AppCompatActivity 
{ 
    String urlPrefix = "rtsp://"; 
    String urlSuffix = ":8554/BWC"; 

    VideoView streamView { get; set; }  

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 
     SetContentView(Resource.Layout.StreamView); 

     var ipAddress = Intent.GetStringExtra("ip"); 
     var url = urlPrefix + ipAddress + urlSuffix; 
     var vidUri = Android.Net.Uri.Parse(url); 

     streamView = FindViewById<VideoView>(Resource.Id.view_stream); 
     streamView.SetMediaController(new MediaController(this)); 
     streamView.SetVideoURI(vidUri); 
     streamView.RequestFocus(); 
     streamView.Start(); 
    } 
} 

在主要活動我只需輸入IP,並觸及按鈕,然後StreamActivity開始,但我打的按鈕後,新的活動開始,我也得到一個錯誤信息:

無法播放該視頻

在logcat中我得到以下警告和錯誤:

11-11 18:14:56.594 W/MediaPlayer(18879):無法打開rtsp://192.168.4.103:8554/BWC:java.io.FileNotFoundException:無內容提供者:rtsp: //192.168.4.103:8554/BWC

11-11 18:15:43.688:E/MediaPlayer的(18879):錯誤(100,0)

任何幫助,將不勝感激!

+1

此視頻饋送是否需要驗證? –

+0

或只是incase,嘗試ImageView以及按照建議在https://stackoverflow.com/questions/30572745/rtsp-stream-will-not-play-with-videoview-no-content-provider-error –

+0

沒有它不需要認證。但我會用imageView來試用它。 –

沙发
0
0

有一種解決方案稱爲浪涌,可能有所幫助 - https://instil.co/surge/

0
votes
answers
34 views
+10

Android Kotlin - 無法調用導航項目選擇的方法

2

我在Kotlin中創建了抽屜菜單,我想使用這個菜單項。在java中,我打電話給onNavigationItemSelected方法,但是當我想在Kotlin中使用它時,它不會出現。這裏是我的代碼:Android Kotlin - 無法調用導航項目選擇的方法

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/drawerLayout" 
    tools:context="com.example.zamknijryjx.liobrus.UserActivity"> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:id="@+id/imie" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="8dp" 
      android:layout_marginStart="8dp" 
      android:layout_marginTop="40dp" 
      android:text="Imie" 
      android:textSize="50sp" 
      android:textColor="@color/black" 
      app:layout_constraintEnd_toEndOf="parent" 
      app:layout_constraintStart_toStartOf="parent" 
      app:layout_constraintTop_toTopOf="parent" /> 

    </android.support.constraint.ConstraintLayout> 

    <android.support.design.widget.NavigationView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     app:menu="@menu/navigation_menu" 
     android:layout_gravity="start" 
     app:headerLayout="@layout/navigation_header"> 
    </android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

這裏是navigation_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@+id/nav_home" 
     android:title="Home"/> 

    <item android:id="@+id/nav_sprawdziany" 
     android:title="Sprawdziany"/> 
    <item android:id="@+id/nav_prace" 
     android:title="Prace klasowe"/> 

</menu> 

和代碼在我的活動:

mToggle = ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close) 
drawerLayout.addDrawerListener(mToggle!!) 
mToggle!!.syncState() 

supportActionBar!!.setDisplayHomeAsUpEnabled(true) 

override fun onOptionsItemSelected(item: MenuItem?): Boolean { 

    if (mToggle!!.onOptionsItemSelected(item)) { 
     return true 
    } 

    return super.onOptionsItemSelected(item) 
} 

所以我要讓是這樣的:當用戶點擊菜單項以id爲例如nav_home它使烤麪包。非常感謝您的幫助!

沙发
0
2

你可以給你的NavigationView的ID在你的佈局文件:

<android.support.design.widget.NavigationView 
    android:id="@+id/navigationView" 
    ... > 
</android.support.design.widget.NavigationView> 

,然後在UserActivity添加一個偵聽到它:

navigationView.setNavigationItemSelectedListener { 
    when (it.itemId) { 
     R.id.nav_home -> { 
      // handle click 
      true 
     } 
     else -> false 
    } 
} 
+0

謝謝你的答案,但我怎麼能開始新的與此有關的活動? –

+0

您可以在處理導航項目點擊的塊內編寫任何代碼 - 只需在其中寫入啓動新「活動」的代碼即可。如果你不知道怎麼做,你應該首先看看Android上的一些初學者教程。 – zsmb13

0
votes
answers
37 views
+10

爲什麼我們作出接口的改造請求

0

我搜索堆棧溢出的答案,但從來沒有找到一個,我很好奇爲什麼我們定義端點,請求方法簡而言之接口的形式服務器的請求,有什麼好處的預先爲什麼我們作出接口的改造請求

+1

我覺得接口對於註釋處理已經足夠了。確定Retrofit類應該做出什麼樣的請求。 –

沙发
0
0

定義請求作爲接口

感謝您的簡單原因,定義一個接口要比實現更容易。

改造是非常簡單易用的。它本質上可以讓你把API調用簡單的Java方法調用

隨着改造你描述要消耗作爲基本的Java接口和改造將建立在編譯時類型安全的實現你的接口的端點。

Here你可以找到一個很好的指導改造1.9和2和here有一個不錯的播客,談論改造和OkHttp。

+0

所以它的內部改造如何實現和使用它? –

+0

是的,它是內部改造,但你可以改變一些行爲,例如你想使用的http客戶端(apache httpclient,okhttp),json轉換器(jakson,gson)等等。 – db80