Android S7E4 : PHP MySQL – PDF Viewer with GridView

Todays 'Edition이나 ProgrammingWizards TV에 오신 것을 환영합니다 이것은 안드로이드 mysql을 PDF로 자습서입니다

우리는 MySQL 데이터베이스에 저장된 PDF 문서를 나열하는 PDF 뷰어 android 앱을 만드는 방법을 알고 있습니다 gridview에서 우리는 HTTP GET 요청을 통해 이러한 PDF 문서를 다운로드하여 이미지와 텍스트가있는 사용자 정의 그리드 뷰 여기에 우리의 응용 프로그램을 볼 수 있습니다, 우리는 헤더 레이블로 TextView, 그리고 빈 gridview 및 다운로드 단추 이 다운로드 버튼을 클릭하면 PHP MySQL 서버에서 PDF가 다운로드됩니다

HTTP GET 요청을 다운로드하거나 만들 때 불확정 progressbar가 렌더링됩니다 그리드 뷰에서 렌더링되는 PDF 문서를 볼 수 있습니다 GridView의 관점에 유의하십시오 그냥 이미지와 텍스트를 렌더링하는 것입니다 PDF 아이콘, PDF 문서 제목 및 PDF 문서 설명입니다

사용자는 문서를 스크롤하고 하나의 PDF 문서를 클릭하여 열어 볼 수 있습니다 이 PDF 문서는 PHP MySQL 데이터베이스에 저장됩니다 그리고 우리는 HTTP GET 요청을 통해 다운로드합니다 단일 gridview 항목을 클릭하면 PDF Viewer 활동을 사용하여 PDF 문서를 렌더링 할 수 있음을 알 수 있습니다 사용자가 볼 수 있듯이 스크롤 핸들을 사용하여 PDF 문서를 스크롤하면 현재 PDF 페이지도 표시됩니다

사용자는 렌더링 된 pdf 문서를 확대 및 축소 할 수도 있습니다 그런 다음 렌더링 할 수있는 다른 PDF 문서도 있습니다 클릭하기 만하면됩니다 이제 우리가 클릭 한 것을 완벽하게 렌더링하고 있음을 알 수 있습니다 당신이 볼 수 있듯이 포맷은 전문적이며 우리는 PDF 문서를 bartesk의 안드로이드 PDF 뷰어 라이브러리

github에서 무료로 사용할 수있는 무료 라이브러리입니다 우리는 당신이 볼 수있는 것처럼 우리의 gridview에서 렌더링 된 다른 PDF 문서를 가지고 있습니다 앞서 말했듯이 PDF를 읽거나 볼 수 있도록 렌더링합니다 그래서 우리는 Java android를 사용하여 PDF Viewer / Reader 응용 프로그램을 작성합니다 그것은 PDF 문서를 MySQL 데이터베이스에 저장합니다

또한 가로 모드에서는 애플리케이션을 볼 수 있습니다 데이터를 다운로드하면 진행률 표시 줄이 표시됩니다 그러면 우리의 PDF 문서는 우리의 gridview에 나열됩니다이 튜토리얼에서는 gridview를 사용했지만 물론 ListView 나 ReccylerView에서 PDF 문서를 나열하거나 해당 어댑터 뷰를 확인할 수도 있습니다 여기에서 PDF 문서가 PDF 활동에서 렌더링되는 것을 볼 수 있습니다

사용자는 확대 / 축소 및 스크롤이 가능하며 PDF 문서는 확실하게 렌더링됩니다 우리의 PDF 문서는 다시 mysql 데이터베이스에 저장 될 것입니다 파이썬을 우리의 서버 측 프로그래밍 언어로 사용할 것이며, 우리의 안드로이드 응용 프로그램은 HTTP (Hyper Text Transfer Protocol)를 통해 PHP에 연결하여 대화 할 것입니다 우선 우리는 mysql 데이터베이스를 설정해야한다 당신은 wamp 서버와 같은 databasae 도구를 사용할 수 있습니다, xampp 서버 또는 유니폼 서버

나는이 경우에 후자를 사용한다 데이터베이스와 테이블을 생성하고 mysql 데이터베이스에 데이터를 삽입 / 저장하려면 PHPMyAdmin이 필요합니다 이러한 데이터는 이름, 설명, 경로 URL, 이미지 URL 및 작성자와 같은 PDF 세부 정보가 될 것이며, 브라우저에서 프로젝트를 실행하여 우리가 처음에 얻은 것을 확인해 봅시다 브라우저에서 내 PHP 스크립트를 클릭하면 mysql 데이터베이스에서 데이터가로드됩니다 그 데이터는 다음과 같습니다

json_encoded로 json 형식으로 출력됩니다 그래서 우리가 안드로이드 애플 리케이션에서 우리의 HTTP 요청을 만들면, 이것이 우리가 얻는 것입니다, 안드로이드 응용 프로그램에서 파싱 될 json 데이터입니다 PHPMyAdmin으로 이동하여 데이터베이스를 만들어 보겠습니다 나는 유니폼 서버를 사용하는 것을 선호한다고 말했지만, 그것과 wamp 서버 또는 심지어 xampp 사이에는 큰 차이가 없다 먼저 제공된 양식에 데이터베이스 이름을 입력하여 데이터베이스를 작성합니다

그런 다음 폼에 테이블 이름을 입력 할 수 있도록 mysql 테이블을 만들어야합니다 내 테이블에 이미 데이터가 있음을 알 수 있습니다 테이블은 행 ID로 구성됩니다 자동으로 증가합니다 pdf 또는 제목의 이름은 이름 열에 저장됩니다

범주 descroption은 테이블에 열을 포함합니다 또한 PDF URL과 이미지 URL을 기록해 두십시오 가장 효율적인 방법은 PDF URL과 이미지 URL을 데이터베이스에 저장하는 것입니다 그런 다음 PDF 파일과 이미지 파일이 서버의 폴더에 저장되어 mysql에 원시 바이너리 모양으로 저장되지 않습니다 우리 테이블 구조는 여기에 있습니다

id 열은 기본 키이며 자동 증가됩니다 다른 열은 varchars 및 텍스트입니다 데이터베이스 테이블을 준비 했으므로 웹 사이트 http://camposhainfo에서 더 많은 지침을 얻습니다 다시 말하지만, 우리는 pdf와 image URL을 데이터베이스에 저장 한 다음 그 URL을 우리의 pdfs 및 이미지를 mysql 데이터베이스 테이블에서로드 할 수 있습니다

여기에서 우리는 pdf 문서 / 아이콘뿐만 아니라 pdf 문서를 저장할 수있는 폴더가 있다는 것을 알 수 있습니다 또한 하나의 PHP 파일 인 indexphp 만 있습니다 여기에 우리의 프로젝트 폴더가 있습니다, 당신은 그것이 당신의 루트 디렉토리에 저장되기를 원합니다 WAMP 서버를 사용한다면 www 디렉토리

Xampp을 사용하면 htdocs 디렉토리가됩니다 이것들이 PDF 문서의 이미지 또는 아이콘임을 알 수 있습니다 이 이미지의 경로를 mysql 데이터베이스에 저장합니다 그런 다음 안드로이드에서 Picasso Imageloader를 사용하십시오 응용 프로그램에서 해당 이미지를 비동기 적으로로드합니다

mysql 데이터베이스에 적절한 이미지 경로를 저장해야한다는 것을 알고 있어야합니다 그런 다음 pdfs 디렉토리도 갖습니다 이 폴더에 PDF 문서가 있음을 분명히 알 수 있습니다 이 PDF의 경로를 mysql 데이터베이스에 저장합니다 그런 다음 비동기 적으로 경로 또는 URL에서 PDF를로드합니다

따라서 필요한 파일과 폴더는 indexphp, PDF 문서가 포함 된 pdfs 디렉토리 및 pdf 이미지가 포함 된 PDF 아이콘입니다 PHPMyAdmin을 사용하여 mysql 데이터베이스에 데이터를 삽입 할 수 있습니다 자동 생성 될 ID를 입력하지 마십시오 당신은 우리가 이름, 카테고리, 설명, PDF URL과 PDF 이미지 / 아이콘 URL을 볼 수 있습니다

그때 그들을 입력하십시오 구하다 대부분의 경우 당신은 일종의 웹 인터페이스를 통해 이것을 할 것입니다 브라우저를 통해 표시 할 수있는 URL을 통해 이미지를로드하는지 확인할 수 있습니다 이제 우리는 PHP 코드를 작성하게되었습니다 PHP는 서버 측 프로그래밍 언어이며, 아마도 가장 인기있는 서버 측 웹 개발 언어입니다

강력한 웹 응용 프로그램을 만들 수 있습니다 이 경우 이해하기 쉬운 객체 지향 PHP 코드를 작성합니다 먼저 Constants라는 클래스를 만듭니다 이 클래스는 데이터베이스 자격 증명과 상수를 보유 할 것이며, 여기에는 데이터베이스 서버 이름, 데이터베이스 이름, 데이터베이스 사용자 이름 및 암호가 표시됩니다 우리 서버는 분명히 localhost입니다

pass라고하는 암호로 sisi라는 사용자 정의 사용자를 만들었습니다 당신이 사용할 수있는 사용자를 만들지 않은 경우 루트를 기본 용도로 사용하고 비밀번호는 비어있는 비밀번호를 사용하십시오 그런 다음 mysql 데이터베이스에서 모든 것을 선택하는 sql 문을 갖게 될 것입니다 이 경우 모든 pdf 문서는 물론 이미지, 설명, 제목, 작성자 등이 선택됩니다 그런 다음 Pdfs라는 다른 클래스에서 PDF CRUD 작업을 수행합니다

먼저 우리에게 우리에게 필요한 기능을 정의합니다 mysql 데이터베이스 테이블 null 또는 mysqli 객체를 반환한다 우리는 객체 지향 방식으로 mysqli를 사용한다 서버 이름, 사용자 이름, 암호 및 데이터베이스 이름을 전달하여 인스턴스를 생성합니다 resultnat mysqli 객체를 con이라는 변수에 넣습니다

그런 다음 mysql 데이터베이스에서 데이터를 선택할 함수로 이동합니다 먼저 connect 메소드를 사용하여 mysql 데이터베이스에 연결한다 연결이 null인지 확인하십시오 그렇다면 우리는 안드로이드 앱으로 전송 될 예외 메시지를 인코딩합니다 그렇지 않은 경우 connection이 null이 아니면 mysqli 객체의 query 메소드를 호출한다

우리는 죄수 물건을 들고 있습니다 모든 mysql 데이터베이스를 선택하기 위해 SQL 문을 전달했다는 것을 기억하십시오 결과가 제로보다 큰 경우 그런 다음 먼저 PHP 배열 배열을 인스턴스화합니다 그런 다음 fetch_array () 메소드를 통해 얻은 결과를 while 루프 루프를 사용합니다 그런 다음 결과를 pdfs 배열로 푸시합니다

원래 우리가이 배열로 밀어 넣고있는 pdf 세부 사항입니다 그런 다음 루프를 종료 한 후 json 형식으로 클라이언트에 보낼 수 있도록 역순으로 배열을 json으로 인코딩합니다 우리가 안드로이드 애플 리케이션에서 마지막으로 추가 된 항목을 먼저 보여주기 때문에 우리는 그것을 뒤집었다 나중에 데이터베이스 연결을 닫습니다 그런 다음 우리는 안드로이드 프로젝트를 만들게됩니다

안드로이드 스튜디오를 사용하고 있습니다 API 레벨 14를 최소 sdk로 사용하고 빈 활동을 선택하겠습니다 그런 다음 우리는 우리 프로젝트에옵니다 먼저 프로젝트 레벨 buildgradle로 이동합니다

여기에서 allprojects 클로저에 maven URL을 https // jitpackio로 추가하고, 이제 앱 수준 buildgradle로 이동합니다 여기에 몇 가지 종속성을 추가합니다 우리 프로젝트에 먼저 CardView, appcompat 및 design과 같은 지원 라이브러리가 있습니다

그럼 우리는 안드로이드 네트워킹 라이브러리, 빠른 안드로이드 네트워킹 라이브러리라고도합니다 이것은 http 요청을 수행하는 데 사용할 라이브러리입니다 이 경우 우리는 http get request를 수행 할 것입니다 빠른 안드로이드 네트워킹 라이브러리는 우리가 비동기 방식으로 우리의 요청을 할 수있게합니다 오류를 적절하게 처리합니다

OkHHTP 네트워킹 레이어를 기반으로합니다 그럼 우리는 asyncronously php mysql에서 우리의 이미지를로드 할 피카소있을 것이다 Android PDFViewer 라이브러리를 사용하여 PDF 문서를 볼 것입니다 서버에서 다운로드하십시오 Android PDF 뷰어는 무료 라이브러리이며 사용하기 쉽고 빠릅니다

마지막으로 우리는 파일,이 경우 자신의 URL에서 PDF 문서를 허용하는 파일 로더 라이브러리를 갖습니다 또한이 작업은 비동기 적으로 수행됩니다 그런 다음 해당 PDF 파일을 내부 저장소에 저장하거나 파일을 저장할 수도 있습니다 외부 저장소 그럼 우리는 그들의 PDF 파일을로드합니다

이러한 종속성을 추가하고 동기화하십시오 그런 다음 androimanifest로 이동하여 인터넷 권한을 추가합니다 또한 외부 저장소에 pdfs를 캐시하는 경우 외부 저장소에 대한 읽기 및 쓰기 기능을 추가 할 수 있습니다 그런 다음 두 개의 이미지 (pdf_iconpng 및 placeholder

png)가 생성됩니다 그럼 우리의 activity_mainxml 루트에서 우리는 수직 방향을 가진 선형 레이아웃을 가지고 있습니다 ProgresssBar 인 TetxtView라는 헤더가 있습니다

ProgressBar가 표시됩니다 우리는 php mysql 서버에서 pdf 문서를 우리의 gridview로 다운로드합니다 그런 다음 다운로드 한 PDF 문서를 나열 할 GridView입니다 ListView, RecyclerView도 사용할 수 있습니다 그런 다음 버튼을 눌러 데이터 다운로드를 시작하고, 다음은 activity_main

xml 레이아웃의 디자인 뷰입니다 다음으로 row_modelxml이 나온다 여기서 디자인보기를 볼 수 있습니다 루트에서 CardView를 갖습니다

CardView 입면도, cardCornerRadius 등을 설정합니다 그런 다음 mysql 데이터베이스에서 pdf 이미지를 렌더링하는 이미지 뷰 그런 다음 TextView를 사용하여 PDF 문서의 이름이나 제목을 표시합니다 pdf의 저자를 표시하는 또 다른 TextView RelativeLayout에 랩핑합니다

그런 다음 activity_pdf 레이아웃 이 레이아웃은 PDF 문서를 렌더링합니다 이 레이아웃에서 사용자는 보거나 pdf를 읽으십시오 맨 위에는 진행 표시 줄이 있습니다 이 진행 상황 표시 줄은 pdf 문서를로드 할 때 표시되며, 그 아래에는 PDFView 요소가 있습니다

이것은 pdf 문서를 렌더링 할 책임이 있습니다 다음으로 우리는 MainActivityjava에옵니다 우리의 프로그래밍 언어는 java이며이 android mysql pdf 뷰어 튜토리얼입니다 우리는 처음부터 시작합니다

먼저 패키지 이름을 지정하십시오 그런 다음 import 문을 추가합니다 그런 다음 클래스를 만들고 AppCompatActivity에서 파생시킵니다 그것은 우리가 여기에서 한 것처럼 안드로이드 manifestxml에 등록되어야하는 활동이다

그런 다음 PDFDoc이라는 내부 클래스를 만듭니다 이 단일 POJO 클래스를 나타내는 클래스 pdf 문서 이 수업에서는 PDF 문서 속성을 정의 할 것입니다 여기에는 정수 인 ID, 이름 pdf의 종류, pdf url뿐만 아니라 pdf 심상 url 우리는 getters에게 세터를 생성합니다 Alt + Enter를 누르고 getters 및 setters를 선택하여 Android Studio를 통해 직접 할 수 있습니다

이제 우리는 GridviewAdapter에 왔습니다 이 클래스를 사용자 정의 어댑터 클래스로 바꾸기 위해 BaseAdapter를 확장합니다 그러나 BaseAdapter는 추상 클래스입니다 그래서 우리는 몇 가지 방법을 재정의하기 위해 열중하게 될 것입니다 그러나 먼저 PDF 문서의 Context와 ArrayList라는 두 개의 인스턴스 필드를 지정합니다

그럼 우리의 생성자 그런 다음 해당 메소드를 대체하십시오 여기에는 getCount (), getItem () 및 getItemId ()가 포함됩니다 getView ()도 있습니다 이 메소드 안에서 우리는 row 객체의 xml 레이아웃을 뷰 객체에 넣고 그것을 반환 할 것이다

하지만 먼저 우리는 그것을 확인합니다 그렇다면 LayoutInflater 클래스를 사용하여 해당 레이아웃을 뷰 객체로 확장합니다 그런 다음 mysql에서 데이터를 표시하기 위해 TextViews와 ImageView를 참조합니다 우리는 우리의 어댑터에서 현재 pdf 문서를 검색합니다 우리는 속성을 가져 와서 적절한 위젯으로 설정합니다

이미지 URL이 null 또는 비어 있는지 확인합니다 그렇다면 우리는 우리가 drawables에 가지고있는 사용자 정의 PDF 아이콘을 표시합니다 그렇지 않으면 Picasso ImageLoader를 통해 네트워크에서 이미지를로드합니다 로드 할 때 자리 표시 자 이미지가 표시됩니다 우리는 또한 우리의 맞춤 그리드 뷰의 onClick 이벤트를 청취 할 것입니다

클릭하면 인 텐트를 통해 PDF 뷰어 활동이 열리고, 우리는 일부 데이터를 해당 활동에 전달할 것이며, 기본적으로 pdf url을 다운로드하여 해당 활동에 pdf 파일을 다운로드 할 수 있습니다 putExtra () 메서드를 사용하여 데이터를 전달합니다 startActivity ()를 호출하여 gridview 항목을 클릭하면 해당 pdf 활동이 열립니다 그런 다음 HTTP 클라이언트를 만듭니다 나는 JSONDownlader를 호출하여 그 일을합니다

먼저 PDF 사이트 URL을 제공해야합니다 기본적으로 pDF URL로 연결되는 URL입니다 IP 주소 또는 1002

2를 사용할 수 있습니다 즉, 우리가하는 것처럼 localhost를 테스트하고있는 것입니다 그런 다음 생성자는 컨텍스트 개체를 사용합니다 우리는 mysql 데이터베이스에서 데이터를 가져 오는 검색을 담당하는 retrieve라는 메소드를 생성 할 것이다 이 메서드는 GridView 및 ProgressBar를 매개 변수로 사용합니다

우리는 pdf 문서를 보관할 arraylist를 만들 것입니다 그런 다음 서버에 HTTP GET 요청을하기 직전에 진행률 막대를 표시합니다 그런 다음 HTTP GET 요청을합니다 AndroidNetworking 또는 Fast Android Networking Library를 사용하고 있습니다 get 메소드에 url을 전달합니다

우선 순위를 설정하고 실제로 HTTP 요청을 수행하기 위해 build ()를 호출합니다 그런 다음 JSON 응답을받습니다 우리는 JSONArray를 받고 있습니다 이제이 JSON 응답을 구문 분석합니다 두 가지 가능성이 있습니다 : 서버로부터 유효한 응답을 얻거나 또는 오류가 발생했습니다

유효한 응답이지만 잘못된 데이터를 얻을 수 있습니다 따라서 JSON 예외를 잡기 위해 JSON 데이터를 구문 분석하는 동안 try catch를 사용합니다 이제 JSON 객체에서 데이터를 가져옵니다 우리는 이름, 카테고리, 설명, pdf url 및 pdf icon url 그런 다음 PDFDOc 객체를 인스턴스화합니다

JSON 객체에서 데이터를 검색하고 PDFDoc을 인스턴스화하면, 우리는 그 항목들을 PDFDoc으로 설정할 것입니다 우리는 setter 메서드를 사용하여이를 수행합니다 그런 다음 해당 PDFDoc을 PDF Documents ArrayList에 추가하십시오 이 arraylist 모든 PDF 문서를 보유합니다 그런 다음 어댑터를 인스턴스화하여 컨텍스트 및 pdf 문서 arraylist를 전달합니다

그런 다음 gridview에 pdf 문서 목록을 표시하기 위해 어댑터를 gridview에 설정하십시오 물론 ListView 나 RecyclerView를 사용할 수도 있습니다 오류가있는 경우 토스트 메시지에 표시합니다 마지막으로 우리는 onCreate () 메소드에 올 것이다 먼저 setContentView () 메서드를 사용하여 contentView를 설정합니다

그런 다음 우리의 gridview 인 adapterview를 참조하십시오 ListView 또는 RecyclerView를 사용한 경우 참조 다음 여기에 우리는 또한 버튼과 진행 막대를 다시 언급합니다 버튼의 onClick 이벤트를 수신합니다 클릭하면 우리는 처음 인스턴스화하여 다운로드를 시작합니다

JSONDownlaoder 클래스를 호출 한 다음 retrieve () 메소드를 호출합니다 이제는 PDFActivity에 도달 할 차례입니다 먼저 패키지를 지정해야합니다 AppCompatActivity에서 상속하는 클래스를 만듭니다 여기에서 볼 수있는 것처럼이 클래스가 일부 인터페이스를 구현하도록 할 것입니다

정의 된 인터페이스입니다 PDFViewer 라이브러리에 있습니다 PDF 로딩을위한 오류 이벤트는 물론 완료까지들을 수 있습니다 우리가 원하는 두 개의 loadComplete () 및 onPageError () 메서드를 재정의합니다 그런 다음 onCreate () 메서드를 재정의합니다

WE는 먼저 PDFView 라이브러리를 참조 할 것입니다 우리는 또한 진행 표시 줄을 참조하고 그것을 보여줍니다 일부 데이터가 MainActivity에서 사용하도록 전달되었음을 기억하십시오 음, pDF URL입니다 우리는 의도를 통해 데이터를 다시 조사해야합니다

그런 다음 FileLoader 라이브러리를 사용하여 PDF 문서를로드합니다 우리는 내부 저장 장치에 pdf 문서를 임시 저장합니다 다운로드가 완료되면 Android PDF 뷰어 라이브러리를 사용하여 PDFView에서 렌더링합니다 파일에서로드합니다 기본 PDF 페이지는 1 페이지입니다

우리의 PDF 문서는 스크롤 할 수 있습니다 로드가 완료되면 진행률 표시 줄을 닫습니다 또한 오류가 발생하면이를 기각합니다 우리가 안드로이드 mysql을 PDF 뷰어 프로젝트를 실행하기 전에 인터넷 사용 권한을 추가했는지 확인하십시오 우리는 프로젝트를 실행합니다

Nox Player 에뮬레이터를 사용하고 있습니다 먼저 브라우저로 가서 ip 주소를 통해 php mysql에 연결할 수 있는지 확인하십시오 또는 1002

2 당신이 볼 수 있듯이 연결을 설정할 수 있습니다 그리고 실제로 브라우저에서 PHP를 실행하면 JSON 데이터가 있음을 알 수 있습니다 그래서 우리는 이제 안드로이드 PHP mysql pdf app으로 이동합니다 처음에 Gridview를 실행하면 데이터가 없습니다

그런 다음 우리는 다운로드 버튼을 클릭하고 우리의 PDF 문서는 우리의 gridview에 나열됩니다 당신은 이름과 저자와 같은 pdf 세부 정보와 함께 PDF 아이콘을 표시하고 있음을 볼 수 있습니다 그런 다음 pdf 항목을 클릭하면 읽을 수 있도록 렌더링 할 수 있습니다 우리는 우리의 애플 리케이션에 나열된 모든 PDF 문서를 열 수 볼 수 있습니다 우리의 응용 프로그램이 성공적으로 작동합니다

그게 다야 긴 튜토리얼로 우리 채널에 가입하십시오 우리는 ProgrammingWizards TV 커뮤니티의 친구들을 만들고 있습니다 또한 공유함으로써 우리를 도우며 도와주세요 소스 코드는 아래 웹 사이트 http://camposha

info에서 다운로드 할 수 있습니다 고마워, 오 클루 미